123 lines
4.1 KiB
PHP
123 lines
4.1 KiB
PHP
<?php
|
|
require 'config.php';
|
|
|
|
// Periksa apakah tombol submit ditekan
|
|
if (isset($_POST['submit'])) {
|
|
$start_date = $_POST['start_date'];
|
|
$end_date = $_POST['end_date'];
|
|
$search = $_POST['search']; // Ambil nilai dari input search
|
|
|
|
// Buat header untuk mengatur tipe konten dan nama file
|
|
header("Content-Type: application/vnd.ms-excel");
|
|
header("Content-Disposition: attachment; filename=Rekap_Absensi_".$start_date."_to_".$end_date.".xls");
|
|
|
|
// Buat tabel HTML yang akan diubah menjadi file Excel
|
|
echo '<table border="1" cellpadding="10" cellspacing="5">
|
|
<tr>
|
|
<td>#</td>
|
|
<td>created</td>
|
|
<td>idrfid</td>
|
|
<td>nama</td>
|
|
<td>division</td>
|
|
<td>mail</td>
|
|
<td>alamat</td>
|
|
<td>tgl</td>
|
|
<td>jam masuk</td>
|
|
<td>jam keluar</td>
|
|
<td>Action</td>
|
|
</tr>';
|
|
|
|
$i = 1;
|
|
$query = "SELECT k.*, a.tgl, a.rekap_masuk, a.rekap_keluar
|
|
FROM data_karyawan k
|
|
INNER JOIN data_absen a ON k.idrfid = a.idrfid
|
|
WHERE a.tgl BETWEEN '$start_date' AND '$end_date'";
|
|
|
|
// Tambahkan kondisi pencarian karyawan jika ada
|
|
if (!empty($search)) {
|
|
$query .= " AND k.nama LIKE '%$search%'";
|
|
}
|
|
|
|
$rows = mysqli_query($conn, $query);
|
|
foreach ($rows as $row) {
|
|
// Tentukan tindakan berdasarkan keterlambatan masuk atau keluar lebih awal
|
|
$action = '';
|
|
$jamMasukLimit = '09:00:00';
|
|
$jamKeluarLimit = '16:00:00';
|
|
$terlambat = $row["rekap_masuk"] > $jamMasukLimit;
|
|
$pulangDulu = $row["rekap_keluar"] < $jamKeluarLimit;
|
|
|
|
if ($terlambat && $pulangDulu) {
|
|
$action = 'Terlambat dan Pulang Dulu';
|
|
} elseif ($terlambat) {
|
|
$action = 'Terlambat';
|
|
} elseif ($pulangDulu) {
|
|
$action = 'Pulang Dulu';
|
|
} else {
|
|
$action = 'Tidak Terlambat';
|
|
}
|
|
|
|
echo '<tr>
|
|
<td>' . $i++ . '</td>
|
|
<td>' . $row["created"] . '</td>
|
|
<td>' . $row["idrfid"] . '</td>
|
|
<td>' . $row["nama"] . '</td>
|
|
<td>' . $row["division"] . '</td>
|
|
<td>' . $row["mail"] . '</td>
|
|
<td>' . $row["alamat"] . '</td>
|
|
<td>' . $row["tgl"] . '</td>
|
|
<td class="jam-masuk">' . $row["rekap_masuk"] . '</td>
|
|
<td class="jam-keluar">' . $row["rekap_keluar"] . '</td>
|
|
<td>' . $action . '</td>
|
|
</tr>';
|
|
}
|
|
|
|
echo '</table>';
|
|
echo '<br><br>';
|
|
|
|
// Query untuk rekapitulasi absensi
|
|
$query_rekap = "SELECT k.nama,
|
|
SUM(CASE WHEN a.rekap_masuk <= '09:00:00' AND a.rekap_keluar >= '16:00:00' THEN 1 ELSE 0 END) AS tidak_terlambat,
|
|
SUM(CASE WHEN a.rekap_masuk > '09:00:00' THEN 1 ELSE 0 END) AS terlambat,
|
|
SUM(CASE WHEN a.rekap_keluar < '16:00:00' THEN 1 ELSE 0 END) AS pulang_dulu,
|
|
SUM(CASE WHEN a.rekap_masuk > '09:00:00' AND a.rekap_keluar < '16:00:00' THEN 1 ELSE 0 END) AS terlambat_dan_pulang_dulu
|
|
FROM data_karyawan k
|
|
INNER JOIN data_absen a ON k.idrfid = a.idrfid
|
|
WHERE a.tgl BETWEEN '$start_date' AND '$end_date'";
|
|
|
|
// Tambahkan kondisi pencarian karyawan jika ada
|
|
if (!empty($search)) {
|
|
$query_rekap .= " AND k.nama LIKE '%$search%'";
|
|
}
|
|
|
|
$query_rekap .= " GROUP BY k.nama ORDER BY k.nama";
|
|
|
|
$rows_rekap = mysqli_query($conn, $query_rekap);
|
|
|
|
echo '<table border="1" cellpadding="10" cellspacing="5">
|
|
<tr>
|
|
<td>Nama</td>
|
|
<td>Tidak Terlambat</td>
|
|
<td>Terlambat</td>
|
|
<td>Pulang Dulu</td>
|
|
<td>Terlambat dan Pulang Dulu</td>
|
|
</tr>';
|
|
|
|
foreach ($rows_rekap as $row_rekap) {
|
|
echo '<tr>
|
|
<td>' . $row_rekap["nama"] . '</td>
|
|
<td>' . $row_rekap["tidak_terlambat"] . '</td>
|
|
<td>' . $row_rekap["terlambat"] . '</td>
|
|
<td>' . $row_rekap["pulang_dulu"] . '</td>
|
|
<td>' . $row_rekap["terlambat_dan_pulang_dulu"] . '</td>
|
|
</tr>';
|
|
}
|
|
|
|
echo '</table>';
|
|
} else {
|
|
// Redirect ke halaman lain jika tombol submit tidak ditekan
|
|
header("Location: index.php");
|
|
exit();
|
|
}
|
|
?>
|