<?php
session_start();
if(!empty($_SESSION))
{
$_SESSION['USERID'] = $_GET['USERID'];
}
$FROM_DATE = $_SESSION['FROM_DATE'];
$TO_DATE = $_SESSION['TO_DATE'];
include_once('./QueryClasses/connect.php');
include_once('./QueryClasses/DISPLAY_INDIVIDUAL_REPORT_QUERY.php');
$OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY = new Individual_Report();
$statement_all_working_days = sqlsrv_prepare($conn,$OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->ALL_WORKING_DAYS());
sqlsrv_execute($statement_all_working_days);
$TOTAL_WORKING_DATES_ARRAY = array();
while($row=sqlsrv_fetch_array($statement_all_working_days))
{
array_push($TOTAL_WORKING_DATES_ARRAY, $row['TOTAL_WORKING_DAYS']);
}
$STATEMENT_ALL_PRESENT_DAYS = sqlsrv_prepare($conn,$OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->PRESENT_DAYS_QUERY());
sqlsrv_execute($STATEMENT_ALL_PRESENT_DAYS);
$PRESENT_DATES_ARRAY = array();
$BADGE_NUMBER = '';
while($row = sqlsrv_fetch_array($STATEMENT_ALL_PRESENT_DAYS))
{
$BADGE_NUMBER = $row['BADGENUMBER'];
array_push($PRESENT_DATES_ARRAY, $row['PRESENT_DATES']);
}
$STATEMENT_ALL_LATE_DAYS = sqlsrv_prepare($conn,$OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->LATE_DAYS_QUERY());
sqlsrv_execute($STATEMENT_ALL_LATE_DAYS);
$LATE_DATES_ARRAY = array();
while($row = sqlsrv_fetch_array($STATEMENT_ALL_LATE_DAYS))
{
array_push($LATE_DATES_ARRAY, $row['LATE_DATES']);
}
$STATEMENT_ALL_EARLY_DAYS = sqlsrv_prepare($conn,$OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->EARLY_DAYS_QUERY());
sqlsrv_execute($STATEMENT_ALL_EARLY_DAYS);
$EARLY_DATES_ARRAY = array();
while($row = sqlsrv_fetch_array($STATEMENT_ALL_EARLY_DAYS))
{
array_push($EARLY_DATES_ARRAY, $row['EARLY_DAYS']);
}
// Execute the Present Check-in Time Query
// Fetch Check-In times
$STATEMENT_ALL_PRESENT_DAYS_CHECKIN = sqlsrv_prepare($conn, $OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->PRESENT_CheckInTime_QUERY());
sqlsrv_execute($STATEMENT_ALL_PRESENT_DAYS_CHECKIN);
$PRESENT_DATES_ARRAY = array();
$CHECKIN_TIMES_ARRAY = array();
while ($row = sqlsrv_fetch_array($STATEMENT_ALL_PRESENT_DAYS_CHECKIN)) {
$BADGE_NUMBER = $row['BADGENUMBER'];
array_push($PRESENT_DATES_ARRAY, $row['PRESENT_DATES']);
array_push($CHECKIN_TIMES_ARRAY, $row['CHECKIN_TIME']);
//array_push($checkOutTime, $row['CheckoutTime']);
}
// Fetch Check-Out times
$STATEMENT_ALL_PRESENT_DAYS_CHECKOUT = sqlsrv_prepare($conn, $OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->PRESENT_CheckOUT_QUERY());
sqlsrv_execute($STATEMENT_ALL_PRESENT_DAYS_CHECKOUT);
$PRESENT_DATES_CHECKOUT_ARRAY = array();
$CHECKOUT_TIMES_ARRAY = array();
while ($row = sqlsrv_fetch_array($STATEMENT_ALL_PRESENT_DAYS_CHECKOUT)) {
$BADGE_NUMBER = $row['BADGENUMBER'];
array_push($PRESENT_DATES_CHECKOUT_ARRAY, $row['PRESENT_DATES_CHECKOUT']); // Store dates as well
array_push($CHECKOUT_TIMES_ARRAY, $row['CHECKOUT_TIME']);
}
// Now you have two arrays: $PRESENT_DATES_ARRAY and $CHECKOUT_TIMES_ARRAY
$STATEMENT_ALL_LEAVE_DAYS = sqlsrv_prepare($conn,$OBJECT_DISPLAY_INDIVIDUAL_REPORT_QUERY->LEAVE_DAYS_QUERY());
sqlsrv_execute($STATEMENT_ALL_LEAVE_DAYS);
$LEAVE_DATES_ARRAY = array();
while($row = sqlsrv_fetch_array($STATEMENT_ALL_LEAVE_DAYS))
{
array_push($LEAVE_DATES_ARRAY, $row['LEAVE_DATE']);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SHOW INDIVIDUAL REPORT</title>
<!-- Google Font: Source Sans Pro -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<!-- Font Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" integrity="sha512-xh6O/CkQoPOWDdYTDqeRdPCVd1SpvCA9XXcUnZS2FmJNp1coAFzvtCN9BmamE+4aHK8yyUHUSCcJHgXloTyT2A==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<!-- Daterange picker -->
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />
<!-- Tempusdominus Bootstrap 4 -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.39.0/css/tempusdominus-bootstrap-4.min.css" integrity="sha512-3JRrEUwaCkFUBLK1N8HehwQgu8e23jTH4np5NHOmQOobuC4ROQxFwFgBLTnhcnQRMs84muMh0PnnwXlPq5MGjg==" crossorigin="anonymous" />
<!-- DATATABLE CSS -->
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.18/css/dataTables.bootstrap4.min.css">
<!-- Theme style -->
<link rel="stylesheet" href="../../dist/css/adminlte.min.css">
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<!-- Tempusdominus Bootstrap 4 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.39.0/js/tempusdominus-bootstrap-4.min.js" integrity="sha512-k6/Bkb8Fxf/c1Tkyl39yJwcOZ1P4cRrJu77p83zJjN2Z55prbFHxPs9vN7q3l3+tSMGPDdoH51AEU8Vgo1cgAA==" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
<!-- AdminLTE App -->
<script src="../../dist/js/adminlte.js"></script>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script src="https://cdn.datatables.net/1.10.18/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.18/js/dataTables.bootstrap4.min.js"></script>
<script src="https://cdn.datatables.net/buttons/2.2.3/js/dataTables.buttons.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
<script src="https://cdn.datatables.net/buttons/2.2.3/js/buttons.html5.min.js"></script>
<script src="https://cdn.datatables.net/buttons/2.2.3/js/buttons.print.min.js"></script>
</head>
<body class="hold-transition sidebar-mini layout-fixed">
<!-- Preloader -->
<div class="wrapper">
<div class="preloader flex-column justify-content-center align-items-center">
<img class="animation__shake" src="../../dist/img/Logo.png" alt="Logo" height="150" width="150" style = "border-radius: 50%;">
</div>
</div>
<nav class="main-header navbar navbar-expand navbar-white navbar-light">
<!-- Left navbar links -->
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a>
</li>
<li class="nav-item d-none d-sm-inline-block">
<a href="./ADMIN_DASHBOARD.php" class="nav-link">Home</a>
</li>
</ul>
<!-- <h1 style = "font-size:1.5rem; padding-top: 0.3em; padding-left: 6em;">EMPLOYEE ATTENDANCE SYSTEM</h1> -->
<!-- Right navbar links -->
<ul class="navbar-nav ml-auto">
<!-- Navbar Search -->
<li class="nav-item">
<a href="../../index.php" class="nav-link" role="button">
<i class="fas fa-sign-out-alt"></i>
<span style="color: red;">LOG OUT</span>
</a>
</li>
</ul>
</nav>
<!-- Main Sidebar Container -->
<aside class="main-sidebar sidebar-dark-primary elevation-4">
<a href="" class="brand-link">
<img src="../../dist/img/Logo.png" alt="AdminLTE Logo" class="brand-image img-circle elevation-3" style="opacity: .8">
<span class="brand-text font-weight-light">IMC</span>
</a>
<!-- Sidebar -->
<div class="sidebar">
<!-- Sidebar user panel (optional) -->
<div class="user-panel mt-3 pb-3 mb-3 d-flex">
<div class="image">
<img src="../../dist/img/user2.jpg" class="img-circle elevation-2" alt="User Image">
</div>
<div class="info">
<a href="#" class="d-block">ATTENDANCE SYSTEM</a>
</div>
</div>
<!-- SidebarSearch Form -->
<div class="form-inline">
<div class="input-group" data-widget="sidebar-search">
<input class="form-control form-control-sidebar" type="search" placeholder="Search" aria-label="Search">
<div class="input-group-append">
<button class="btn btn-sidebar">
<i class="fas fa-search fa-fw"></i>
</button>
</div>
</div>
</div>
<!-- Sidebar Menu -->
<nav class="mt-2">
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
<li class="nav-item menu-open">
<a href="" class="nav-link active">
<i class="nav-icon fas fa-file"></i>
<p>
<p>
INDIVIDUAL REPORT
</p>
<i class="right fas fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="./DISPLAY_ALL_MAIN_STAFF_REPORT.php" class="nav-link">
<i class="nav-icon fas fa-file"></i>
<p>
DISPLAY REPORT
</p>
</a>
</li>
</ul>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="./ALL_MAIN_STAFF_REPORT.php" class="nav-link">
<i class="nav-icon fas fa-file"></i>
<p>
MAIN STAFF REPORT
</p>
</a>
</li>
</ul>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="./ADMIN_DASHBOARD.php" class="nav-link">
<i class="nav-icon fas fa-tachometer-alt"></i>
<p>
ADMIN DASHBOARD
</p>
</a>
</li>
</ul>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="./DAILY_ATTENDANCE.php" class="nav-link">
<i class="nav-icon fas fa-user"></i>
<p>
DAILY ATTENDANCE
</p>
</a>
</li>
</ul>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="./USER_INFO.php" class="nav-link">
<i class="far fa-user nav-icon"></i>
<p>USER INFO</p>
</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</aside>
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0">LEAVE DAYS</h1>
</div><!-- /.col -->
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="#">Home</a></li>
<li class="breadcrumb-item active">SHOW LEAVE DAYS</li>
</ol>
</div><!-- /.col -->
</div><!-- /.row -->
</div><!-- /.container-fluid -->
</div>
<section class="content">
<div class="container-fluid">
<table id="datatableid" class="table table-bordered table-dark">
<thead>
<tr>
<th scope = "col">EMPLOYEE ID</th>
<th scope = "col">WORKING DATES</th>
<th scope = "col">CHECK IN</th>
<th scope = "col">CHECK OUT</th>
<th scope = "col">LATE DATES</th>
<th scope = "col">EARLY DATES</th>
<th scope = "col">LEAVE DATES</th>
</tr>
</thead>
<tbody>
<?php sqlsrv_execute($statement_all_working_days); while($row=sqlsrv_fetch_array($statement_all_working_days)) { ?>
<tr>
<td><?php echo $BADGE_NUMBER; ?></td>
<td><?php echo $row['TOTAL_WORKING_DAYS']; ?></td>
<td>
<?php
// Check if the current row's total working days exists in the PRESENT_DATES_ARRAY
if (in_array($row['TOTAL_WORKING_DAYS'], $PRESENT_DATES_ARRAY)) {
// Find the index of the matching date in PRESENT_DATES_ARRAY
$index = array_search($row['TOTAL_WORKING_DAYS'], $PRESENT_DATES_ARRAY);
// Ensure the indices exist, otherwise fallback to "N/A"
$checkInTime = isset($CHECKIN_TIMES_ARRAY[$index]) ? $CHECKIN_TIMES_ARRAY[$index] : "N/A";
// Display the present status with check-in and check-out times
echo "(Check-in: " . $checkInTime .")";
} else {
echo "ABSENT";
}
?>
</td>
<td>
<?php
// Check if the current row's total working days exists in the PRESENT_DATES_ARRAY
if (in_array($row['TOTAL_WORKING_DAYS'], $PRESENT_DATES_ARRAY)) {
// Find the index of the matching date in PRESENT_DATES_ARRAY
$index = array_search($row['TOTAL_WORKING_DAYS'], $PRESENT_DATES_ARRAY);
// Ensure the indices exist, otherwise fallback to "N/A"
$checkOutTime = isset($CHECKOUT_TIMES_ARRAY[$index]) ? $CHECKOUT_TIMES_ARRAY[$index] : "N/A";
// Display the present status with check-in and check-out times
echo "(Check-Out: " . $checkOutTime .")";
} else {
echo "ABSENT";
}
?>
</td>
<td><?php if(in_array($row['TOTAL_WORKING_DAYS'], $LATE_DATES_ARRAY)) { echo "LATE"; }?></td>
<td><?php if(in_array($row['TOTAL_WORKING_DAYS'], $EARLY_DATES_ARRAY)) { echo "EARLY"; }?></td>
<td><?php if(in_array($row['TOTAL_WORKING_DAYS'], $LEAVE_DATES_ARRAY)) { echo "LEAVE"; }?></td>
</tr>
<?php } ?>
<tr>
<td><?php echo "SUMMARY" ?></td>
<td><?php echo sizeof($TOTAL_WORKING_DATES_ARRAY);?></td>
<td><?php echo sizeof($PRESENT_DATES_ARRAY); ?></td>
<td><?php echo sizeof($LATE_DATES_ARRAY); ?></td>
<td><?php echo sizeof($EARLY_DATES_ARRAY); ?></td>
<td><?php echo sizeof($LEAVE_DATES_ARRAY); ?></td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</body>
</html>
<script>
$(document).ready(function () {
$('#datatableid').DataTable({
dom: 'Bfrtip',
buttons: [
{ extend: 'pdf', className: 'btn-danger', messageTop: 'Attendance Report of an Employee <?php echo $BADGE_NUMBER; ?> DATED: <?php echo $FROM_DATE; ?> TO <?php echo $TO_DATE; ?>' },
{ extend: 'excel', className: 'btn-success', messageTop: 'Attendance Report of an Employee <?php echo $BADGE_NUMBER; ?> DATED: <?php echo $FROM_DATE; ?> TO <?php echo $TO_DATE; ?>' },
{ extend: 'print', className: 'btn-secondary', messageTop: 'Attendance Report of an Employee <?php echo $BADGE_NUMBER; ?> DATED: <?php echo $FROM_DATE; ?> TO <?php echo $TO_DATE; ?>' },
],
lengthMenu: [10, 15, 50, 100, 400],
"fnCreatedRow": function(nRow, aData, iDataIndex) {
$(nRow).attr('USERID', aData[0]);
},
'processing': 'true',
'paging': 'true',
'order': [],
} );
});
</script>
PHP version :
PHP 7.4
PHP 8.0
PHP 8.1
PHP 8.2
PHP 8.3
PHP 8.4
Run PHP Code
Save snippet