<?php
// connect to the database
    include('connection.php');
	 include('includes/header.php');

	
	if (isset($_POST['project_tran_edit'])){
//if(count($_POST)>0) {
mysqli_query($conn,"UPDATE project_transations set id='" . $_POST['id'] . "',
 PaymentDate='" . $_POST['PaymentDate'] . "',
 ProjectName='" . $_POST['ProjectName'] . "',
 Amount='" . $_POST['Amount'] . "' ,
 paymentmethod='" . $_POST['paymentmethod'] . "',
  Amount='" . $_POST['Amount'] . "' ,
 
 Remarks='" . $_POST['Remarks'] . "',
 ReceivedBy='" . $_POST['ReceivedBy'] . "',
 PaymentBy='" . $_POST['PaymentBy'] . "'
 WHERE Id='" . $_POST['id'] . "'");
$message = "Record Modified Successfully";
}
$result = mysqli_query($conn,"SELECT * FROM project_transations WHERE PTUserId ='" . $_SESSION['UserId'] . "' and Id='" . $_GET['Id'] . "'");
$row= mysqli_fetch_array($result);



?>


<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: 6px;
  resize: vertical;
}
input[type=date], 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[type=submit], textarea {
  width: 50%;
  margin-left:30%;
  margin-top:5px;
  border-radius: 15px;
  background-color: red;
  padding: 20px 20px 20px 20px;
  margin: center;
}
.cancel{
  width: 50%;
  margin-left:30%;
  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{
	margin-top: 5px !important;
	text-align: center;
	background-color: red;
	width: 50%;
	 margin-left: 25%;
}
}
.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>

<html>

<head>
<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 Tran Edit</title>
<!-- 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>
</head>
<body>


<div id="content">
   
      <div class="row">
        <form class="from" action="project_tran_edit_save.php" method="post" enctype="multipart/form-data" >
	
		<th><h1>
		
		
		<p style="font-size:xx-large; color: black; text-align: center;" >
		
		* Update Id <?php echo $row['Id']; ?> *</br>* নেওয়া সংশোধণ *</h1>
</th>
	<div class="row">
		<div class="col-25">	
			<label for="fname">ID :</label>
		</div>
		<div class="col-75">
		<input type="hidden" name="id" class="txtField" value="<?php echo $row['Id']; ?>">
		<input  type="text" name="id"  value="<?php echo $row['Id']; ?>">
		</div>
		</div>
	<div class="row">
		<div class="col-25">
		 <label for="fname">Payment Date :</label>
		</div>
		<div class="col-75">
    <input type="date" name="PaymentDate" value="<?php echo $row['PaymentDate']; ?>">
		</div>
	</div>
	<div class="row">
		<div class="col-25">
	<label for="lname">Project Name</label>
</div>
		<div class="project">
	<select id="project" name="ProjectName" class="form-control">
	
	
	<option value="<?php echo $row['ProjectName']; ?>"><?php echo $row['ProjectName']; ?></option>
			
	<?php
	$sqlQuery = "SELECT ProjectName,Id FROM project WHERE PUserId ='" . $_SESSION['UserId'] . "' ";
	$resultSet = mysqli_query($conn, $sqlQuery)
	?>
	
            <?php while($rows = mysqli_fetch_array($resultSet)){
			?>
            <option value="<?php echo $rows['Id'];?>"><?php echo $rows['ProjectName'];?></option>
			
			<?php
			}
			?>
            </select>
	</div>
	</div>
<div class="row">
		<div class="col-25">
	
	<label>Amount</label>
		</div>
		<div class="col-75">
    <input  type="number" name="Amount" class="txtField" value="<?php echo $row['Amount']; ?>">
	</div>
	</div>
	<div class="row">
		<div class="col-25">

	<label for="fname">payment Method</label>
	</div>
		<div class="col-75">
   
   <select name="paymentmethod" id="paymentmethod">
	
		<option value="Cash"
		<?php
		if($row["paymentmethod"]=='Cash')
		{
			echo "selected";
		}
		?>
		>Cash</option>
		<option value="Chaque"
		<?php
		if($row["paymentmethod"]=='Chaque')
		{
			echo "selected";
		}
		?>
		>Chaque</option>
		<option value="Mobail Banking Transfe"
		<?php
		if($row["paymentmethod"]=='Mobail Banking Transfe')
		{
			echo "selected";
		}
		?>
		>Mobail Banking Transfe</option>
		<option value="Bank To Bank Transfer"
		<?php
		if($row["paymentmethod"]=='Bank To Bank Transfer')
		{
			echo "selected";
		}
		?>
		>Bank To Bank Transfer</option>
		<option value="Others"
		<?php
		if($row["paymentmethod"]=='Others')
		{
			echo "selected";
		}
		?>
		>Others</option>
		
    </select>
   
   </div>
	</div>
	<div class="row">
		<div class="col-25">
	<label for="fname">Remarks</label>
	</div>
		<div class="col-75">
    <input type="text" name="Remarks" value="<?php echo $row['Remarks']; ?>">
	</div>
	</div>
	<div class="row">
		<div class="col-25">
	<label for="fname">Received By :</label>
	</div>
		<div class="col-75">
    <input type="text" name="ReceivedBy" value="<?php echo $row['ReceivedBy']; ?>">
</div>
	</div>
	
	<div class="row">
		<div class="col-25">
<label for="fname">Payment By :</label>
</div>
		<div class="col-75">
    <input type="text" name="PaymentBy" value="<?php echo $row['PaymentBy']; ?>">
	</div>
	</div>
	
	<button type="submit" name="project_tran_edit">Update</button></br></br>
		  <button class="cancel" ><a  href="project_transations.php" type="cancel">Cancel</a></button>
		  
          
		  
        </form>
      </div>
    </div>
	</div>

  </body>

</html>
<script>
$("#project").select2( {
	placeholder: "Choose A Payment Project",
	allowClear: true
	} );
</script>