<?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>Index</title>

<html>
 <head>

<style>
  #date{
		background-color: green;
		text-align: center;
		color: LightGoldenRodYellow;
	}
  </style>
  <meta content='width=device-width, initial-scale=0.75, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no' name='viewport' />
  <!--     Fonts and icons     -->
  <link href="https://fonts.googleapis.com/css?family=Montserrat:400,700,200" rel="stylesheet" />
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <!-- CSS Files -->
 


<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
 </head>
<body>
 <div id="content">
<div class="table-responsive-md">
<div  id="mob" style="margin-top: 30px">
       
            <div id="page-inner">
              <div class="row">
                  <div class="col-md-12">
                      
                      
              <style type="text/css">
                  .different-text-color { color: #191970; }
                   </style>                    
                  <marquee>  <h1 class="page-subhead-line"><p style="font-size:xx-large;"><span class="different-text-color" style="font-weight:bold;">Welcome <strong>POWER LINKS CTG </strong>Today is:
                  <i class="icon-calendar icon-large" ></i>


                  <?php
                  date_default_timezone_set("Asia/Dhaka");
                 echo  date(" l, F d, Y") . "<br>";

                  ?>
           </span>
           </p>
           </h1> 
        </marquee>
		
		</br>
		</hr>
		
		
		
                  </div>
              </div>
                <!-- /. ROW  -->
                <?php
                //include("main.php");
                ?>
                <!-- /. ROW  -->


            </div>



</div>
</div>
</div>


<div id="content">
<div class="table-responsive-md">
<div  id="mob" style="margin-top: 100px">
<script>
$(function() {
    $( "#textfrom" ).datepicker({
        dateFormat: "yy-mm-dd",                 
        changeMonth: true,
        changeYear: true
    });
});

</script>

<form method="POST" autocomplete="off">

<div id="date">
<h1 style="font-weight:bold;">
<td >
 *Toady
<?php 
                  date_default_timezone_set("Asia/Dhaka");
                 echo  date(" l, F d, Y") . "";

                  ?>  Entry *

</td>
</h1>
</div>
</form>

      <div class="content">
        <div class="row">
          <div class="col-lg-6">
            <div class="card card-chart">
              <div class="card-header">
		        <div>
                    <td style="font-size:xx-large">
                    <h1 style="font-weight:bold;">
                    Employees Salary Today
                    </td>
                </div>

         				<table class="table table-bordered">
         				    <thead style="font-weight:bold; text-align: center;"  class="alert-info">
						<tr>
						
						<th>Employee Name</th>
						<th>Salary</th>
						<th>Pay</th>
						<th>Project Name</th>
						<th>Edit</th>
					</tr>
					</thead>
					<?php
					$query=mysqli_query($conn, "SELECT project.ProjectName, employee.EmployeeName, PaymentDate, employee_transations.Salary, PayAmount, project.Id, employee_transations.Id from employee_transations JOIN project on employee_transations.ProjectName=project.Id JOIN employee on employee_transations.EmployeeName=employee.Id 
					where  `PaymentDate` = CURDATE() and TUserId ='" . $_SESSION['UserId'] . "' ") or die(mysqli_error());
					
					while($row=mysqli_fetch_array($query))
					{
						echo "<tr>
						
						<td>$row[EmployeeName]</td>
						<td>$row[Salary]</td>
						<td>$row[PayAmount]</td>
					
						<td>$row[ProjectName]</td>
						<td><a href=employee_tran_edit.php?Id=$row[Id] class=btn btn-primary  glyphicon glyphicon-edit target=_blank >Edit</a></td>
						</tr>";
				
			
					}
					
			
					?>
					
					<tfoot>
			<tr style="font-weight:bold; text-align: center;"  class="alert-info">
			<th><?php
			
				//sum of amunt filtter project_transations
				$sql = "SELECT  SUM(Salary) from employee_transations where  `PaymentDate` = CURDATE() and TUserId ='" . $_SESSION['UserId'] . "' ";
				$result = $conn->query($sql);
				//display data on web page
				while($row1 = mysqli_fetch_array($result)){
				echo "Total";
				echo "";
				}
				
			?></th>
			<th>
						<?php
			
				//sum of amunt filtter project_transations
				$sql = "SELECT  SUM(Salary) from employee_transations where  `PaymentDate` = CURDATE() and TUserId ='" . $_SESSION['UserId'] . "' ";
				$result = $conn->query($sql);
				//display data on web page
				while($row1 = mysqli_fetch_array($result)){
				echo " ". $row1['SUM(Salary)']." ";
				echo "";}
				
			?></th>
			<th><?php
			
				//sum of amunt filtter project_transations
				$sql = "SELECT  SUM(PayAmount) from employee_transations where  `PaymentDate` = CURDATE() and TUserId ='" . $_SESSION['UserId'] . "' ";
				$result = $conn->query($sql);
				//display data on web page
				while($row1 = mysqli_fetch_array($result)){
				echo " ". $row1['SUM(PayAmount)']." ";
				echo "";}

			?></th>
			<th></th>
			<th></th>	
	</tr></tfoot>
					

				</table>

              </div>


            </div>
          </div>
          <div class="col-lg-6 col-md-9">
            <div class="card card-chart">
              <div class="card-header">
                                    <div>
                <td style="font-size:xx-large">
                <h1 style="font-weight:bold;">
                Project Payment Today
                </td>
                </div>
                
							<table class="table table-bordered">
						
						<tr style="font-weight:bold; text-align: center;"  class="alert-info">
						<th>Project Name</th>
						<th>Amount</th>
						<th>Remarks</th>
						<th>Edit</th>
					</tr>
					<?php
					$query=mysqli_query($conn, "SELECT project.ProjectName, Remarks, Amount, PaymentDate, project.Id, project_transations.Id from project_transations JOIN project on project_transations.ProjectName=project.Id
 WHERE `PaymentDate` = CURDATE() and PTUserId ='" . $_SESSION['UserId'] . "'") or die(mysqli_error());
					
					while($row=mysqli_fetch_array($query))
					{

						echo "<tr>
						
						<td>$row[ProjectName]</td>
						<td>$row[Amount]</td>
						<td>$row[Remarks]</td>
						<td><a href=project_tran-edit.php?Id=$row[Id] class=btn btn-primary  glyphicon glyphicon-edit, target=_blank >Edit</a></td>

						</tr>";
					}
				

						
					?>
				</table>
                

              </div>
              

            </div>
          </div>
		  


            </div>
          </div>

        </div>
      </div>
<br/>

<hr>
<div >
            <div class="card card-chart">
              <div class="card-header">
                  <div>
<td style="font-size:xx-large">
<h1 style="font-weight:bold;">
Project Expense Today
</td>
</div>
			 						   
     
							<table class="table table-bordered">
						 
						<tr style="font-weight:bold; text-align: center;"  class="alert-info" >

						<th>Project Name</th>
						<th>Expense Type</th>
						<th>Amount</th>
						<th>Remarks</th>
						<th>Edit</th>
					</tr>
					<?php
					$query=mysqli_query($conn, "SELECT project.ProjectName, Remarks, ExpenseType, Amount, Date, project.Id, expense.Id from expense JOIN project on expense.ProjectName=project.Id 
WHERE `Date` = CURDATE() and EXUserId ='" . $_SESSION['UserId'] . "' ") or die(mysqli_error());
					
					while($row=mysqli_fetch_array($query))
					{

						echo "<tr>
						
						<td>$row[ProjectName]</td>
						<td>$row[ExpenseType]</td>
						<td>$row[Amount]</td>
						<td>$row[Remarks]</td>
						<td><a href=project_tran-edit.php?Id=$row[Id] class=btn btn-primary  glyphicon glyphicon-edit, target=_blank >Edit</a></td>

						</tr>";
					}
				

						
					?>
				</table>
                

              </div></div>
              

              </div>
              <div id="date">
<td style="font-size:xx-large">
<h1 style="font-weight:bold;">
Date Fiter
</td>
</div>
<form method="POST" autocomplete="off">
<td>Select Date</td>
<td>
<input type="text" value="<?php if(isset($_POST["search"])){echo $_POST["Fromdate"];}else{}?>" id="textfrom" name="Fromdate" class="datepicker" >
<input type="submit" id="search" name="search" >

</td>

<div id="date">
<td style="font-size:xx-large">
<h1>
<?php if(isset($_POST["search"])){echo $_POST["Fromdate"];}else{}?></h1>
</td>
</div>
</form>

      <div class="content">
        <div class="row">
          <div class="col-lg-6">
            <div class="card card-chart">
              <div class="card-header">
			  <h4 class="card-title">Employees Salary
			  <?php if(isset($_POST["search"])){echo $_POST["Fromdate"];}else{}?>
			  
			  
			  </h4>
                <?php

					if(isset($_POST["search"]))
					{
						$selecttxt=$_POST["Fromdate"];
						$query=mysqli_query($conn,"select * from employee_transations WHERE PaymentDate ='$selecttxt' and TUserId ='" . $_SESSION['UserId'] . "'");
						$count=mysqli_num_rows($query);
						if($count=="0")
						{
							echo"<h2>No Record Found</h2>";
						}
						else{
							?>
							<table class="table table-bordered">
						<tr style="font-weight:bold; text-align: center;"  class="alert-info">
						
						<th>Employee Name</th>
						<th>Salary</th>
						<th>Pay</th>
						<th>Project Name</th>
						<th>Edit</th>
					</tr>
					<?php
					$query=mysqli_query($conn, "SELECT project.ProjectName, employee.EmployeeName, PaymentDate, employee_transations.Salary, PayAmount, project.Id, employee_transations.Id from employee_transations JOIN project on employee_transations.ProjectName=project.Id JOIN employee on employee_transations.EmployeeName=employee.Id WHERE PaymentDate ='$selecttxt' and TUserId ='" . $_SESSION['UserId'] . "'") or die(mysqli_error());
					
					while($row=mysqli_fetch_array($query))
					{
						echo "<tr>
						
						<td>$row[EmployeeName]</td>
						<td>$row[Salary]</td>
						<td>$row[PayAmount]</td>
					
						<td>$row[ProjectName]</td>
						<td><a href=employee_tran_edit.php?Id=$row[Id] class=btn btn-primary  glyphicon glyphicon-edit target=_blank >Edit</a></td>
						</tr>";
						
						
			
					}
					
						}
					}
						
					?>
					
					<tfoot>
			<tr style="font-weight:bold; text-align: center;"  class="alert-info">
			<th><?php
			if(isset($_POST["search"])){
					
						$selecttxt=$_POST["Fromdate"];
				//sum of amunt filtter project_transations
				$sql = "SELECT  SUM(Salary) from employee_transations WHERE PaymentDate ='$selecttxt' and TUserId ='" . $_SESSION['UserId'] . "'";
				$result = $conn->query($sql);
				//display data on web page
				while($row1 = mysqli_fetch_array($result)){
				echo "Total";
				echo "";
				}
				}
			?></th>
			<th>
						<?php
			if(isset($_POST["search"])){
			$selecttxt=$_POST["Fromdate"];
				//sum of amunt filtter project_transations
				$sql = "SELECT  SUM(Salary) from employee_transations WHERE PaymentDate ='$selecttxt' and TUserId ='" . $_SESSION['UserId'] . "'";
				$result = $conn->query($sql);
				//display data on web page
				while($row1 = mysqli_fetch_array($result)){
				echo " ". $row1['SUM(Salary)']." ";
				echo "";}
				}
			?></th>
			<th><?php
			if(isset($_POST["search"])){
			$selecttxt=$_POST["Fromdate"];
				//sum of amunt filtter project_transations
				$sql = "SELECT  SUM(PayAmount) from employee_transations WHERE PaymentDate ='$selecttxt' and TUserId ='" . $_SESSION['UserId'] . "' ";
				$result = $conn->query($sql);
				//display data on web page
				while($row1 = mysqli_fetch_array($result)){
				echo " ". $row1['SUM(PayAmount)']." ";
				echo "";}
				}
			?></th>
			<th></th>
			<th></th>	
	</tr></tfoot>
					

				</table>

              </div>
              <div class="card-body">
                <div class="chart-area">
                  <tfoot>
	              <div class="card-body">
                <div class="table-responsive">
                  <table class="table">
                    <thead style="font-weight:bold; text-align: center;"  class="alert-info">
                      <th>
                        Salary
                      </th>
                      <th>
                        Payment
                      </th>

                      <th class="text-left">
                        Total Blance
                      </th>
                    </thead>
                    <tbody style="font-weight:bold; class=" text-bold">
                      <tr>
                        <td>
                          <?php
		//sum of amunt filtter project_transations
		$sql = "SELECT  SUM(Salary) from employee_transations where TUserId ='" . $_SESSION['UserId'] . "'";
		$result = $conn->query($sql);
		//display data on web page
		while($row1 = mysqli_fetch_array($result)){
		echo " ". $row1['SUM(Salary)']." ";
		echo "<br>";
		}
	?>
                        </td>
                        <td>
                         <?php	
		//sum of amunt filtter PayAmount
		$sql = "SELECT  SUM(PayAmount) from employee_transations where TUserId ='" . $_SESSION['UserId'] . "'";
		$result = $conn->query($sql);
		//display data on web page
		while($row1 = mysqli_fetch_array($result)){
		echo " ". $row1['SUM(PayAmount)'];
		echo "<br>";
	}
	?>
                        </td>
                        <td>
                          <?php	
		//sum of amunt filtter Salary
		$sql = "SELECT  SUM(Salary-PayAmount) from employee_transations where TUserId ='" . $_SESSION['UserId'] . "'";
		$result = $conn->query($sql);
		//display data on web page
		while($row1 = mysqli_fetch_array($result)){
		echo " ". $row1['SUM(Salary-PayAmount)'];
		echo "<br>";
	}
	?>
                    
                      </tr>

                    </tbody>
                  </table>
				 		  
                </div>
              </div>
	</tfoot>
                </div>
              </div>
              <div class="card-footer">
                <div class="stats">
                  <i class="now-ui-icons arrows-1_refresh-69"></i> Just Updated
                </div>
              </div>
            </div>
          </div>
          <div class="col-lg-6 col-md-9">
            <div class="card card-chart">
              <div class="card-header">
			  <h4 class="card-title">Project Payment
			  <?php if(isset($_POST["search"])){echo $_POST["Fromdate"];}else{}?>
			  </h4>
                <?php

					if(isset($_POST["search"]))
					{
						$selecttxt=$_POST["Fromdate"];
						$query=mysqli_query($conn,"select * from project_transations WHERE PaymentDate ='$selecttxt' and PTUserId ='" . $_SESSION['UserId'] . "'");
						$count=mysqli_num_rows($query);
						if($count=="0")
						{
							echo"<h2>No Record Found</h2>";
						}
						else{
							?>
							<table class="table table-bordered">
						
						<tr style="font-weight:bold; text-align: center;"  class="alert-info">
						<th>Project Name</th>
						<th>Amount</th>
						<th>Remarks</th>
						<th>Edit</th>
					</tr>
					<?php
					$query=mysqli_query($conn, "SELECT project.ProjectName, Remarks, Amount, PaymentDate, project.Id, project_transations.Id from project_transations JOIN project on project_transations.ProjectName=project.Id
 WHERE PaymentDate ='$selecttxt' and PTUserId ='" . $_SESSION['UserId'] . "'") or die(mysqli_error());
					
					while($row=mysqli_fetch_array($query))
					{

						echo "<tr>
						
						<td>$row[ProjectName]</td>
						<td>$row[Amount]</td>
						<td>$row[Remarks]</td>
						<td><a href=project_tran-edit.php?Id=$row[Id] class=btn btn-primary  glyphicon glyphicon-edit, target=_blank >Edit</a></td>

						</tr>";
					}
				
						}
					}
						
					?>
				</table>
                

              </div>
              <div class="card-body">
                <div class="chart-area">
                 <tfoot>
	<tr>
	<th  style="font-weight:bold; text-align: center;"  class="alert-info" colspan="5" >
		<h4>
	 <span class="different-text-color" style="font-weight:bold;">
		<?php
		//sum of amunt filtter project_transations
		$sql = "SELECT  SUM(Amount) from project_transations where PTUserId ='" . $_SESSION['UserId'] . "'";
		$result = $conn->query($sql);
		//display data on web page
		while($row1 = mysqli_fetch_array($result)){
		echo " Total Amount : ". $row1['SUM(Amount)']." Tk";
		echo "<br>";
		}
	?>
	<?php
		//sum of amunt filtter project_transations
		$sql = "SELECT  SUM(Salary) from employee_transations where TUserId ='" . $_SESSION['UserId'] . "'";
		$result = $conn->query($sql);
		//display data on web page
		while($row1 = mysqli_fetch_array($result)){
		echo " Total Salary Cost: ". $row1['SUM(Salary)']."Tk";
		echo "<br>";
		}
	?></a>
	</h4></span></th>
	
	
	
	
	</tr></tfoot>

                </div>
              </div>
			  
              <div class="card-footer">
                <div class="stats">
                  <i class="now-ui-icons arrows-1_refresh-69"></i> Just Updated
                </div>
              </div>
            </div>
          </div>

        </div>
        
      </div>
  <!--   Core JS Files   -->
    <script>
    $(document).ready(function() {
      // Javascript method's body can be found in assets/js/demos.js
      demo.initDashboardPageCharts();

    });
  </script>
  <script>


	$(function()
	{
		$("#textfrom").datepicker(
		{
			dateFormat:'yy-mm-dd'
		});
	});
</script>


   <script src="js/jquery-1.10.2.js"></script>
    <!-- BOOTSTRAP SCRIPTS -->
    <script src="js/bootstrap.js"></script>
    <!-- METISMENU SCRIPTS -->
    <script src="js/jquery.metisMenu.js"></script>
       <!-- CUSTOM SCRIPTS -->
    <script src="js/custom1.js"></script>

</div></div></div>

</body>
</html>
 

