<?php
require('includes/header.php');

   include('connection.php');
 
?>

<meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
    <link rel="shortcut icon" type="image/x-icon" href="upload/icon.png">
  
    <title>Project Transations</title>

<html>
 <head>


    <link rel="stylesheet" type="text/css" href="assets/css/font-awesome.min.css">
    <link rel="stylesheet" type="text/css" href="assets/css/select2.min.css">
    <link rel="stylesheet" type="text/css" href="assets/css/dataTables.bootstrap4.min.css">
    <link rel="stylesheet" type="text/css" href="assets/css/bootstrap-datetimepicker.min.css">
    <link rel="stylesheet" type="text/css" href="assets/css/style1.css">
	
     <!-- Custom CSS -->
    <link href="css/sb-admin-2.css" rel="stylesheet">
    <link href="css/custom.css" rel="stylesheet">
    <link href="js/plugins/fullcalender/fullcalendar.css" rel="stylesheet">

     <!-- Datepicker CSS -->
     <link href="css/datepicker.css" rel="stylesheet">
	 

<style>
.card-title {
    color: red;
    font-size: 25px;
    margin-bottom: 20px;
}
.card-box {
    background-color: #fff;
    border-radius: 4px;
    margin-bottom: 30px;
    padding: 0px;
    position: relative;
    box-shadow: 0 1px 2px 0 rgb(0 0 0 / 10%);
}

#myTable tr:nth-child(even) td{
  background-color: #f2f2f2;
}
.doc-prof{
	background-color: green;
}
.nav-item{
	background-color: #07f5aa;
	 border-radius: 10px;
	
}
.show_amt{
	text-align: center;
	}
.page-header{

	text-align: center;
	background-color: #2780e3;
	width: 100%;
	margin-left: 0%;
	}
  .page-title {
    color: #f7f6f5;
    font-size: 50px;
    font-weight: normal;
    margin-bottom: 10px;
}
	.page {
    color: #2780e3;
    font-size: 50px;
    font-weight: normal;
    margin-bottom: 10px;
}



/*
@media screen and (min-device-width: 600px) {
  td.hhh, th.hhh {display:none; }
  
  
  }
  	.page-header{

	text-align: center;
	background-color: green;
	width: 100%;
	margin-left: 0%;
	}
  

	

  
    @media screen and (max-width: 600px) {
 tbody.ggg, thead.ggg {
    font-size:2.5vw;
  }
}

@media screen and (max-width: 500px) {
  td.kkk, th.kkk {display:none; }
  tbody.ggg, thead.ggg {
    font-size:2.5vw;
  }
	}
	Max width before this PARTICULAR table gets nasty. This query will take effect for any screen smaller than 760px and also iPads specifically.
	*/
	

	
	@media
	  only screen 
    and (max-width: 400px), (min-device-width: 600px) 
    and (max-device-width: 500px)  {

		/* Force table to not be like tables anymore */
		table, thead, tbody, th, td, tr {
			display: block;
		}

		/* Hide table headers (but not display: none;, for accessibility) */
		thead tr {
			position: absolute;
			top: -9999px;
			left: -9999px;
		}
.content {
    padding: 0 5px;
}
    tr {
      margin: 0 0 1rem 0;
	  
    }
      
    tr:nth-child(odd) {
      background: #ccc;
    }
    
		td {
			/* Behave  like a "row" */
			border: none;
			border-bottom: 1px solid #eee;
			position: relative;
			padding-left: 50%;
			font-size:2.7vw;
			
		}

		td:before {
			/* Now like a table header */
			position: relative;
			/* Top/left values mimic padding */
			top: 0;
			left: 6px;
			width: 45%;
			padding-right: 20px;
			white-space: nowrap;
			font-size:3vw;
			
		}


		/*
		Label the data
    You could also use a data-* attribute and content for this. That way "bloats" the HTML, this way means you need to keep HTML and CSS in sync. Lea Verou has a clever way to handle with text-shadow.
		*/
		td:nth-of-type(1):before { content: "PaymentDate : ";}
		td:nth-of-type(2):before { content: "ProjectName :"; }
		td:nth-of-type(3):before { content: "Amount :"; }
		
		td:nth-of-type(5):before { content: "Remarks :"; }
		td:nth-of-type(6):before { content: "Tran_Id :"; }
		td:nth-of-type(7):before { content: "Operation :"; }
	}

</style>

</head>
<body>


<div id="content">
<div class="table-responsive-md">
<div  id="mob" style="margin-top: 40px">
					<div style="font-weight:bold; text-align: center;"  class="alert-info">
				    <?php
				    if(isset($_GET['msg'])) echo $_GET['msg'];
				    ?>
				</div>
					<div class="row">
                    <div class="col-sm-6 col-3">
                        <h4 class="page">Project Transations List</h4>
                    </div>

                    <div class="col-sm-6 col-9 text-right m-b-20">
                        <a href="project_transations.php" class="btn btn-primary btn-rounded float-right"><i class="fa fa-plus"></i>Add Project Payment </br>আজকের নেওয়া যোগ করুন </a>
               
                        
                    </div>
					</div>

 
<hr>
<?php
// connect to the database

	
	$sqli=$conn->query("Select * from project_transations");
        foreach ($sqli as $key => $row) 


?>


            <div class="content">
			<div class="page-header">
                <div class="row">
                    <div class="col-sm-4 col-3">
                        <h4 class="page-title">Project Transations List</h4>
                    </div>
					
                   
<div class="doc-prof"><a style="padding: 25px; font-weight:bold;"  href="project_tran_display.php"  class="btn btn-primary btn-rounded glyphicon glyphicon-refresh"></a></div>
                    </div>
                    </div>
                </div>
		<hr>
				<div class="profile-tabs">
					<ul class="nav nav-tabs">
					
					<li class="nav-item"><a class="nav-link active" href="#home" data-toggle="tab">Last 15</a></li>
				
						<li class="nav-item"><a class="nav-link" href="#menu1" data-toggle="tab">List Page</a></li>
						<li class="nav-item"><a class="nav-link" href="#menu2" data-toggle="tab">All</a></li>
						<li class="nav-item"><a class="nav-link" href="#menu3" data-toggle="tab">Date Filter</a></li>
					</ul>

  <div class="tab-content">
    <div id="home" class="tab-pane fade in active">
      <div class="row">
                    <div class="">
                        <div class="card-box">
                            <h3 class="card-title">Project Transations Last 15</h3>
			<div class="row">
					<div class="col-md-12">
						<div class="table-responsive">

						
									<table id="#" class="table table-bordered" style="font-size:1.5vw;">
                                    <thead class="ggg">
                                        <tr class="alert-info">
										<th>PaymentDate</th>
                                            <th>ProjectName</th>
											<th>Amount</th>
                                            <th class="kkk">Remarks</th>
                                            
                                            <th class="kkk">Tran_Id</th>

                                           
											<th class="text-right">Action</th>
                                        </tr>
                                    </thead>
                                    <tbody class="ggg">
		<?php $sqli=$conn->query("SELECT project.ProjectName, Remarks, PaymentDate, Amount, project.Id, project_transations.Id from project_transations JOIN project on project_transations.ProjectName=project.Id where PTUserId ='" . $_SESSION['UserId'] . "' ORDER BY `project_transations`.`PaymentDate` DESC LIMIT 15");
        foreach ($sqli as $key => $project_transations) {
		?>
								<tr>
									
									<td><?php echo $project_transations ['PaymentDate']; ?></td>
									<td><?php echo $project_transations ['ProjectName'];?></td>
									<td class="cal_amt"><?php echo $project_transations ['Amount']; ?></td>
									<td  class="kkk"><?php echo $project_transations ['Remarks']; ?></td>
									
									<td class="kkk"><?php echo $project_transations ['Id']; ?></td>

									
                                           
											<td class="text-right">
											<div class="dropdown dropdown-action">
												<a href="#" class="action-icon dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-ellipsis-v"></i></a>
												<div class="dropdown-menu dropdown-menu-right">
													<li>
													<a class="dropdown-item" href="project_tran-edit.php?Id=<?php echo $project_transations["Id"]; ?>>"><i class="btn btn-primary btn-xs glyphicon glyphicon-edit"></i> Edit</a>
													</li>
													<li>
												<a class="dropdown-item" href="project_tran-edit.php?Id=<?php echo $project_transations["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-eye-open"></i> view</a>
													
													</li>
													<li>
													    <a  onClick=pay(<?php echo $project_transations["Id"]; ?>) class="btn btn-primary btn-xs glyphicon glyphicon-eye-open">MoneyRecpeit</a>
													<a target="_blank" class="dropdown-item" href="MoneyRecpeit.php?Id=<?php echo $project_transations["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-eye-open"></i> MoneyRecpeit</a>
													</li>
													<li>
													<a target="_blank" class="dropdown-item" href="sms.php?Id=<?php echo $project_transations["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-eye-open"></i> SMS SEND</a>
													</li>
												</div>
											</div>
										</td>
                                        </tr>
                                <?php } ?>        
                                    </tbody>
       <tr class="alert-info">
          
          <td colspan = "6" class="show_amt">Total Amount :</td>
          
       </tr>

                                </table>
								</div>
                            </div>
                        </div>
                        </div>
						</div>	
                    </div>
    </div>
    <div id="menu1" class="tab-pane fade">
		<h1 class="card-title">List Page 10 of 10 All</h1>
            <div class="content">

                </div>
			<div class="row">
					<div class="col-md-12">
						<div class="table-responsive">

						
									<table id="#" class="table table-border table-striped custom-table datatable mb-0">
                                    <thead class="ggg">
                                        <tr>
										<th>PaymentDate</th>
                                            <th>ProjectName</th>
											<th>Amount</th>
                                            <th class="kkk">Remarks</th>
                                            
                                            <th class="kkk">Tran_Id</th>

                                           
											<th class="text-right">Action</th>
                                        </tr>
                                    </thead>
                                    <tbody class="ggg">
		<?php $sqli=$conn->query("SELECT project.ProjectName, Remarks, PaymentDate, Amount, project.Id, project_transations.Id from project_transations JOIN project on project_transations.ProjectName=project.Id  where PTUserId ='" . $_SESSION['UserId'] . "' ORDER BY `project_transations`.`PaymentDate` DESC");
        foreach ($sqli as $key => $project_transations) {
		?>
								<tr>
									
									<td><?php echo $project_transations ['PaymentDate']; ?></td>
									<td><?php echo $project_transations ['ProjectName'];?></td>
									<td><?php echo $project_transations ['Amount']; ?></td>
									<td  class="kkk"><?php echo $project_transations ['Remarks']; ?></td>
									
									<td class="kkk"><?php echo $project_transations ['Id']; ?></td>

									
                                           
											<td class="text-right">
											<div class="dropdown dropdown-action">
												<a href="#" class="action-icon dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-ellipsis-v"></i></a>
												<div class="dropdown-menu dropdown-menu-right">
													<li>
													<a class="dropdown-item" href="employee_tran_edit.php?Id=<?php echo $project_transations["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-edit"></i> Edit</a>
													</li>
													<li>
													<a class="dropdown-item" href="employee_tran_display1.php?Id=<?php echo $project_transations["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-eye-open"></i> view</a>
													
													</li>
													<li>
													<a target="_blank" class="dropdown-item" href="MoneyRecpeit.php?Id=<?php echo $project_transations["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-eye-open"></i> MoneyRecpeit</a>
													</li>
												</div>
											</div>
										</td>
                                        </tr>
                                <?php } ?>        
                                    </tbody>

                                </table>
								</div>
                            </div>
                        </div>
               
                    </div>
				
    <div id="menu2" class="tab-pane fade">
	
	<div class="page-header">
                <div class="row">
                    <div class="col-sm-4 col-3">
                        <h4 class="page-title">All Transations</h4>
                    </div>
					
                    <div class="col-sm-5 col-9 text-right m-b-20">
                       <label class="page-title"><h3>search</h3></label>
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.." title="Type in a name">
</div>
                    </div>
                </div>
			<div class="row">
					<div class="col-md-12">
						<div class="table-responsive">
 
						
									<table class="table table-bordered" style="font-size:1.5vw;">
                                    <thead class="ggg">
                                        <tr class="alert-info">
										<th>PaymentDate</th>
                                            <th>ProjectName</th>
											<th>Amount</th>
                                            <th class="kkk">Remarks</th>
                                            
                                            <th class="kkk">Tran_Id</th>

                                           
											<th class="text-right">Action</th>
                                        </tr>
                                    </thead>
                                    <tbody id="myTable" class="ggg">
		<?php $sqli=$conn->query("SELECT project.ProjectName, Remarks, PaymentDate, Amount, project.Id, project_transations.Id from project_transations JOIN project on project_transations.ProjectName=project.Id  where PTUserId ='" . $_SESSION['UserId'] . "' ORDER BY `project_transations`.`PaymentDate` DESC");
        foreach ($sqli as $key => $project_transations) {
		?>
								<tr>
									
									<td><?php echo $project_transations ['PaymentDate']; ?></td>
									<td><?php echo $project_transations ['ProjectName'];?></td>
									<td><?php echo $project_transations ['Amount']; ?></td>
									<td  class="kkk"><?php echo $project_transations ['Remarks']; ?></td>
									
									<td class="kkk"><?php echo $project_transations ['Id']; ?></td>

									
                                           
											<td class="text-right">
											<div class="dropdown dropdown-action">
												<a href="#" class="action-icon dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-ellipsis-v"></i></a>
												<div class="dropdown-menu dropdown-menu-right">
													<li>
													<a class="dropdown-item" href="employee_tran_edit.php?Id=<?php echo $project_transations["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-edit"></i> Edit</a>
													</li>
													<li>
													<a class="dropdown-item" href="employee_tran_display1.php?Id=<?php echo $project_transations["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-eye-open"></i> view</a>
													
													</li>
													<li>
													<a target="_blank" class="dropdown-item" href="MoneyRecpeit.php?Id=<?php echo $project_transations["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-eye-open"></i> MoneyRecpeit</a>
													</li>
												</div>
											</div>
										</td>
                                        </tr>
                                <?php } ?>        
                                    </tbody>

                                </table>
								</div>
                            </div>
                        </div>
					
    </div>
    <div id="menu3" class="tab-pane fade">
	
      <h3>Date Filtter</h3>
	<div class="col-lg-8 ">
		<form class="no-print" method="POST" action="">
		<div class="col-md-4 ">
			<label >Date:</label>
			<input type="date" value="<?php if(isset($_POST["search"])){echo $_POST["date1"];}else{}?>" id="textfrom" name="date1" class="datepicker" >
			
			</div>
			<div class="col-md-4 ">
		
			<label>To</label>
			<input type="date" value="<?php if(isset($_POST["search"])){echo $_POST["date2"];}else{}?>" id="textfrom1" name="date2" class="datepicker" >
			
			</div>
			<button class="btn btn-primary" name="search"><span class="glyphicon glyphicon-search"></span></button> <a href="displayproject.php" type="button" class="btn btn-success"><span class = "glyphicon glyphicon-refresh"><span></a>
			
		</form>
		
	</div>
	<div class="col-md-12 ">
		
	
		
		<div class="">	
			<table id="customers" class="table table-bordered">
				<thead class="alert-info">
				<th role="columnheader" style="font-weight:bold; text-align: center;"  class="alert-info" colspan="6" >Project Transations</th>
					<tr>
																<th>PaymentDate</th>
                                            <th>ProjectName</th>
											<th>Amount</th>
                                            <th class="kkk">Remarks</th>
                                            
                                            <th class="kkk">Tran_Id</th>

                                           
											<th class="text-right">Action</th>
					</tr>
				</thead>
				<tbody>
					<?php include'date_filter_tran.php'?>	
				</tbody>
				
				
				
				
			</table>
		</div>	
	</div>
	
	
	
	
	
	
	
	
	
    </div>
  </div>
</div>


</div>
</div>

    <div class="sidebar-overlay" data-reff=""></div>
    <script src="assets/js/jquery-3.2.1.min.js"></script>
	<script src="assets/js/popper.min.js"></script>
    <script src="assets/js/bootstrap.min.js"></script>
    <script src="assets/js/jquery.dataTables.min.js"></script>
    <script src="assets/js/dataTables.bootstrap4.min.js"></script>
    <script src="assets/js/jquery.slimscroll.js"></script>
    <script src="assets/js/app.js"></script>
	


<script>
$(document).ready(function(){
  $("#myInput").on("keyup", function() {
    var value = $(this).val().toLowerCase();
    $("#myTable tr").filter(function() {
      $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
    });
  });
});
</script>





<script>
    $(document).ready(function() {
        $('table thead th').each(function(i) {
            calculateColumn('.cal_amt');
        });
    });

    function calculateColumn(index) {
        var total = 0;
        $(index).each(function() {
            var value = parseInt($(this).text());
            if (!isNaN(value)) {
                total += value;
                console.log(total);
            }
        });
        $('.show_amt').text('Total: ' + total);
    }
</script>


<script type="text/javascript">
		document.getElementById('date').valueAsDate = new Date();
		function pay(id) {
		let left = (screen.width/2)-(600/2);
  	let top = (screen.height/2)-(800/2);
		let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=600,height=800,left=${left},top=${top}`;
		open('MoneyRecpeit.php?Id='+id, 'Hello World !', params)
		}
		function bill(id) {
		let left = (screen.width/2)-(600/2);
  	let top = (screen.height/2)-(800/2);
		let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=600,height=800,left=${left},top=${top}`;
		open('MoneyRecpeit.php?Id='+id, 'Hello World !', params)
		}
	</script>
</body>
</html>