<?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>Employee Salary</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">
<?php

	 //include('includes/checklogin.php');
$sqlQuery = "SELECT Id, ProjectName ,ContactName,SortAddress, status FROM project where status=1 and PUserId ='" . $_SESSION['UserId'] . "'";
$resultSet = mysqli_query($conn, $sqlQuery)
?>


   <link rel="stylesheet" href="style.css">
   <!-- Select2 CSS --> 
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet" /> 

<!-- jQuery --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> 

<!-- Select2 JS --> 
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>

<meta content='width=device-width, initial-scale=0.75, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no' name='viewport' />

<style>
* {
  box-sizing: border-box;
}
form-content{
  float: left;
  width: 100%;
  margin-top: 6px;
}

input[type=text], select, textarea {
  width: 100%;
  padding: 12px;
  border: 1px solid #ccc;
  border-radius: 4px;
  resize: vertical;
}
input[type=number], select, textarea {
  width: 100%;
  padding: 12px;
  border: 1px solid #ccc;
  border-radius: 4px;
  resize: vertical;
}
input[type=date], select, textarea {
  width: 100%;
  padding: 12px;
  border: 1px solid #ccc;
  border-radius: 4px;
  resize: vertical;
}
input[type=Amount], select, textarea {
  width: 100%;
  padding: 12px;
  border: 1px solid #ccc;
  border-radius: 6px;
  resize: vertical;
}


label {
  padding: 12px 12px 12px 0;
  display: inline-block;
}

button {
  width: 15%;
  margin-left:8%;
  margin-top:5px;
  border-radius: 15px;
  background-color: red;
  padding: 20px 20px 20px 20px;
  margin:center;
}
button:hover {
  background-color: #05ceed;
}
#content {
  border-radius: 0px;
  background-color: #fcfcfc;
  padding: 2%;
  margin-left: 50px;
}
.page-header{
	border-radius: 20px;
	color: #f9f9f9;
	text-align: center;
	background-color: red;
	width: 100%;
	margin-left: 0%;
	font-weight: bold;
	}

}
.red{
	text-align: center ;
	text-color: green !important;
	width: 50%;
	 margin-left: 25%;
}


.from {
  border-radius: 15px;
  background-color: #3c42383d;
  padding: 50px;
  margin-left: 10px;
}

.col-25 {
  float: left;
  width: 25%;
  margin-top: 6px;
}

.col-75 {
  float: left;
  width: 75%;
  margin-top: 6px;
}
  .select2 {
   width: 75% !important;
  margin-top: 6px;
}

/* Clear floats after the columns */
.row:after {
  content: "";
  display: table;
  clear: both;
}

/* Responsive layout - when the screen is less than 600px wide, make the two columns stack on top of each other instead of next to each other */
@media screen and (max-width: 700px) {
  .col-25, .col-75, input[type=submit] {
    width: 100%;
    margin-top: 0;
  }
 .select2 {
   width: 100% !important;
   
}
}

</style>


 
</head>
<body>
<div id="content">
<div class="table-responsive-md">
<div  id="mob" style="margin-top: 40px">
 <div class="row">
                    <div class="col-sm-6 col-3">
                        <h4 class="page">Today Pyment List </br>আজকের নেওয়া  তলিকা <h4>
                    </div>

                    <div class="col-sm-6 col-9 text-right m-b-20">
                        <a href="project_tran_display.php" class="btn btn-primary btn-rounded float-right"><i class="fa fa-plus"></i>Project Payment List </br>সকল নেওয়া তালিকা </a>
               
                        
                    </div>
					</div>
  <table class="table table-bordered">
                                    <thead style="font-weight:bold; text-align: center;"  class="alert-info">
                                        <tr>
										<th>Date </br>তারিখ </th>
                                            <th>Project Name</br>প্রজেক্ট নাম</th>
											<th>Amount</br>টাকা</th>
                                           
                                            <th class="kkk">Tran Id</br>নাম্বার</th>

                                           
											<th class="text-right">Action</br>সংশোধণ</th>
                                        </tr>
                                    </thead>
                                    <tbody class="ggg">
		<?php $sqli=$conn->query("SELECT project.ProjectName, PaymentDate, Amount, project.Id, project_transations.Id from project_transations JOIN project on project_transations.ProjectName=project.Id WHERE `PaymentDate` = CURDATE() and PTUserId ='" . $_SESSION['UserId'] . "'");
        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 ['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 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>
       <tr class="alert-info">
          
          <td colspan = "6" class="show_amt">Total Amount :</td>
          
       </tr>

                                </table>
							
  
    
	<div class="row">
        <form class="from" action="save_project_trn.php" method="post" enctype="multipart/form-data" >
				<div style="font-weight:bold; text-align: center;"  class="alert-info">
				    <?php
				    if(isset($_GET['msg'])) echo $_GET['msg'];
				    ?>
				</div>
		<h2 class="page-header">Add Project Payment</br>টাকা নেওয়া যোগ করুন</h2>
	
	<div class="row">
		<div class="col-25">
			<label for="fname">Date / তারিখ :</label>
		</div>
		<div class="col-75">
			<input type="date" name="PaymentDate"  required placeholder="dd-mm-yyyy">
		</div>
	</div>

	<div class="row">
		<div class="col-25">
			<label for="lname">Payment Project /প্রজেক্ট নাম :</label>
		</div>
		<div class="project">
			<select type="text"  id="project" name="ProjectName" class="form-control" required placeholder>
				<option  value="">Choose A Payment Project</option>
				<?php while($rows = mysqli_fetch_array($resultSet)){
				?>
				<option class="red" value="<?php echo $rows['Id'];?>"><?php echo $rows['ProjectName'];?>!!  Address = <?php echo $rows['SortAddress'];?>!!  ContactName = <?php echo $rows['ContactName'];?></option>
				
				<?php
				}
				?>
			</select>
		</div>
	</div>
	<div class="row">
		<div class="col-25">
			<label for="lname">Amount /টাকা :</label>
		</div>
		<div class="col-75">
			<input type="number" class="red" name="Amount" required placeholder="Amount....">
		</div>
	</div>
 	<div class="row">
		<div class="col-25">
	
			<label for="lname">Payment Method /টাকার পদ্ধতি :</label>
   		</div>
		<div class="col-75"> 
			<select type="text" name="paymentmethod" id="">
				<option value="Cash">Cash</option>
				<option value="Chaque">Chaque</option>
				<option value="Mobail Banking Transfe">Mobail Banking Transfer</option>
				<option value="Bank To Bank Transfer">Bank To Bank Transfer</option>
				<option value="Others">Others</option>
			</select>
		</div>
	</div>
	<div class="row">
		<div class="col-25">
			<label for="number_format">Remarks / মন্তব্য :</label>
		</div>
		<div class="col-75"> 
			<input  type="text" name="Remarks" placeholder="Remarks....">
		</div>
	</div>
	<div class="row">
      <div class="col-25">							
  
			<label for="lname">Received By / গ্রহণকারী:</label>
		</div>
		 <div class="col-75"> 
			<input   type="text" name="ReceivedBy" placeholder="Received By....">
		</div>
	</div>
	<div class="row">
		<div class="col-25">
			<label  for="lname">Payment By / প্রদানকারী:</label>
		</div>
		<div class="col-75"> 
			<input  type="text" name="PaymentBy" placeholder="Payment By....">
		</div>
	</div>
	
	<div class="m-t-20 text-center">
	    
	    
<button  class="btn btn-primary submit-btn btn-rounded" type="submit" id="submit" name="savetransations"  >Save</button>


			<button class="btn btn-primary submit-btn btn-rounded" type="reset" name=""  value="Clear Fields">Clear</button>
			<button class="btn btn-primary submit-btn btn-rounded"  type="reset"><a href="project_tran-display.php">Cancel</a></button>
	</div>	
        </form>
</div>
</div>
</div>
</div>

</body>
</html>



<script>
$("#project").select2( {
	placeholder: "Choose A Payment Project",
	allowClear: true
	} );
</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">
   function sending() {
	  $('#submit').text("Processing... Please wait until finished processing");
       $('#submit').addClass("btn-danger");
       $('#submit').removeClass("btn-success");
    div = document.getElementById('sending');
    div.style.display = "block";
	
}
</script>
<script type="text/javascript">
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-85164502-3');
</script>
