<?php
require('includes/header.php');

   include('connection.php');
 
?>


<html>
 <head>
	
<!DOCTYPE html>
<html lang="en" >
<head>
<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>Expense Transations</title>

    <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: "Salary :"; }
		td:nth-of-type(3):before { content: "PayAmount :"; }
		td:nth-of-type(4):before { content: "ProjectName :"; }
		td:nth-of-type(5):before { content: "Tran_Id :"; }
		td:nth-of-type(6):before { content: "Operation :"; }
		td:nth-of-type(7):before { content: "Operation :"; }
	}

</style>

</head>
<body>
<?php
 require_once('includes/header.php');

 ?>

<div id="content">
<div class="table-responsive-md">
<div  id="mob" style="margin-top: 40px">
					<div class="row">
                    <div class="col-sm-4 col-3">
                        <h4 class="page">Expense Transations List</h4>
                    </div>
                    <div class="col-sm-8 col-9 text-right m-b-20">
                        <a href="ExpenseAdd.php" class="btn btn-primary btn-rounded float-right"><i class="fa fa-plus"></i>Add Expense</a>
               
                        <a href="ExpenseTitles.php" class="btn btn-primary btn-rounded float-right"><i class="fa fa-plus"></i>Add ExpenseTitles</a>
                    </div>
					</div>

 
<hr>
<?php
// connect to the database

	
	$sqli=$conn->query("Select * from expense WHERE EXUserId ='" . $_SESSION['UserId'] . "' ");
        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">Expense Transations List</h4>
                    </div>
					
                   
<div class="doc-prof"><a style="padding: 25px; font-weight:bold;"  href="Expense.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">Expense 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>Date</th>
                                            <th>ProjectName</th>
											<th>Amount</th>
                                            <th class="kkk">Remarks</th>
                                            <th class="kkk">ExpenseType</th>

                                           
											<th class="text-right">Action</th>
                                        </tr>
                                    </thead>
                                    <tbody class="ggg">
		<?php $sqli=$conn->query("SELECT project.ProjectName, Amount, Date, Remarks, expensetitles.ExpenseType from expense INNER JOIN project on expense.ProjectName=project.Id INNER JOIN expensetitles on expense.ExpenseType=expensetitles.Id 
		where EXUserId ='" . $_SESSION['UserId'] . "' ORDER BY `expense`.`Date` DESC LIMIT 15"
	);
        foreach ($sqli as $key => $expense) {
		?>
								<tr>
									
									<td><?php echo $expense ['Date']; ?></td>
									<td><?php echo $expense ['ProjectName'];?></td>
									<td class="cal_amt"><?php echo $expense ['Amount']; ?></td>
									<td  class="kkk"><?php echo $expense ['Remarks']; ?></td>
									
									<td class="kkk"><?php echo $expense ['ExpenseType']; ?></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 $expense["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 $expense["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-eye-open"></i> view</a>
													
													</li>
													<li>
													<a class="dropdown-item" href="#" data-toggle="modal" data-target="#delete_patient"><i class="fa fa-trash-o m-r-5"></i> Delete</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>Date</th>
                                            <th>ProjectName</th>
											<th>Amount</th>
                                            <th class="kkk">Remarks</th>
                                            
                                            <th class="kkk">ExpenseType</th>

                                           
											<th class="text-right">Action</th>
                                        </tr>
                                    </thead>
                                    <tbody class="ggg">
									
									
		<?php $sqli=$conn->query("SELECT project.ProjectName, Amount, Date, Remarks, expensetitles.ExpenseType from expense INNER JOIN project on expense.ProjectName=project.Id INNER JOIN expensetitles on expense.ExpenseType=expensetitles.Id
		where EXUserId ='" . $_SESSION['UserId'] . "' ORDER BY `expense`.`Date` DESC");
        foreach ($sqli as $key => $expense) {
		?>
								<tr>
									
									<td><?php echo $expense ['Date']; ?></td>
									<td><?php echo $expense ['ProjectName'];?></td>
									<td><?php echo $expense ['Amount']; ?></td>
									<td  class="kkk"><?php echo $expense ['Remarks']; ?></td>
									
									<td class="kkk"><?php echo $expense ['ExpenseType']; ?></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 $expense["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 $expense["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-eye-open"></i> view</a>
													
													</li>
													<li>
													<a class="dropdown-item" href="#" data-toggle="modal" data-target="#delete_patient"><i class="fa fa-trash-o m-r-5"></i> Delete</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 Expense</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>Date</th>
                                            <th>ProjectName</th>
											<th>Amount</th>
                                            <th class="kkk">Remarks</th>
                                            
                                            <th class="kkk">ExpenseType</th>

                                           
											<th class="text-right">Action</th>
                                        </tr>
                                    </thead>
                                    <tbody id="myTable" class="ggg">
		<?php $sqli=$conn->query("SELECT project.ProjectName, Amount, Date, Remarks, expensetitles.ExpenseType from expense INNER JOIN project on expense.ProjectName=project.Id INNER JOIN expensetitles on expense.ExpenseType=expensetitles.Id 
		where EXUserId ='" . $_SESSION['UserId'] . "' ORDER BY `expense`.`Date` DESC");
        foreach ($sqli as $key => $expense) {
		?>
								<tr>
									
									<td><?php echo $expense ['Date']; ?></td>
									<td><?php echo $expense ['ProjectName'];?></td>
									<td><?php echo $expense ['Amount']; ?></td>
									<td  class="kkk"><?php echo $expense ['Remarks']; ?></td>
									
									<td class="kkk"><?php echo $expense ['ExpenseType']; ?></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 $expense["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 $expense["Id"]; ?>"><i class="btn btn-primary btn-xs glyphicon glyphicon-eye-open"></i> view</a>
													
													</li>
													<li>
													<a class="dropdown-item" href="#" data-toggle="modal" data-target="#delete_patient"><i class="fa fa-trash-o m-r-5"></i> Delete</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="" class="table table-bordered">
				<thead class="alert-info">
				<th role="columnheader" style="font-weight:bold; text-align: center;"  class="alert-info" colspan="6" >Expense Transations</th>
					<tr>
																<th>Date</th>
                                            <th>ProjectName</th>
											<th>Amount</th>
                                            <th class="kkk">Remarks</th>
                                            
                                            <th class="kkk">ExpenseType</th>

                                           
											<th class="text-right">Action</th>
					</tr>
				</thead>
				<tbody>
					<?php include'date_filter_Expense.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>
$(document).ready(function(){
	$('a[data-toggle="tab"]').on('show.bs.tab', function(e) {
		localStorage.setItem('activeTab', $(e.target).attr('href'));
	});
	var activeTab = localStorage.getItem('activeTab');
	if(activeTab){
		$('#myTab a[href="' + activeTab + '"]').tab('show');
	}
});
</script>


</body>
</html>







