129 lines
4.0 KiB
PHP
129 lines
4.0 KiB
PHP
<?php
|
|
require_once __DIR__ . "/../config/db.php";
|
|
include __DIR__ . "/../partials/header.php";
|
|
include __DIR__ . "/../partials/sidebar.php";
|
|
|
|
$status = $_GET["status"] ?? "";
|
|
$q = trim($_GET["q"] ?? "");
|
|
|
|
// Filter
|
|
$w = [];
|
|
|
|
if ($status === "berhasil" || $status === "gagal") {
|
|
$w[] = "status='" . $conn->real_escape_string($status) . "'";
|
|
}
|
|
|
|
if ($q !== "") {
|
|
$safe = $conn->real_escape_string($q);
|
|
$w[] = "nomor_resi LIKE '%{$safe}%'";
|
|
}
|
|
|
|
$where = count($w) ? "WHERE " . implode(" AND ", $w) : "";
|
|
|
|
// Ambil data log
|
|
$logs = $conn->query("SELECT * FROM log_akses {$where} ORDER BY created_at DESC LIMIT 300");
|
|
?>
|
|
|
|
<div class="card-glass p-4 mb-3">
|
|
<div class="d-flex justify-content-between align-items-center flex-wrap gap-2">
|
|
<div>
|
|
<h3 class="mb-1">Log Akses</h3>
|
|
<div class="text-muted">Riwayat autentikasi barcode (berhasil/gagal) + bukti foto.</div>
|
|
</div>
|
|
<a class="btn btn-outline-light" href="/smart-drop-point/public/log_add_mock.php">
|
|
<i class="bi bi-lightning-charge me-2"></i>Tambah Log Dummy
|
|
</a>
|
|
</div>
|
|
|
|
<form class="row g-2 mt-3" method="get">
|
|
<div class="col-md-5">
|
|
<input class="form-control" name="q"
|
|
value="<?= htmlspecialchars($q) ?>"
|
|
placeholder="Cari nomor resi...">
|
|
</div>
|
|
|
|
<div class="col-md-5">
|
|
<select class="form-select" name="status">
|
|
<option value="">Semua status</option>
|
|
<option value="berhasil" <?= $status === "berhasil" ? "selected" : "" ?>>berhasil</option>
|
|
<option value="gagal" <?= $status === "gagal" ? "selected" : "" ?>>gagal</option>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="card-glass p-3">
|
|
<div class="table-responsive">
|
|
<table class="table table-dark table-hover align-middle mb-0">
|
|
<thead>
|
|
<tr>
|
|
<th>Waktu</th>
|
|
<th>Nomor Resi</th>
|
|
<th>Status</th>
|
|
<th>Pesan</th>
|
|
<th>Foto</th>
|
|
<th class="text-center">Aksi</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
<?php if ($logs && $logs->num_rows > 0): ?>
|
|
<?php while ($l = $logs->fetch_assoc()): ?>
|
|
<tr>
|
|
<td class="text-muted">
|
|
<?= htmlspecialchars($l["created_at"] ?? "-") ?>
|
|
</td>
|
|
|
|
<td class="fw-semibold">
|
|
<?= !empty($l["nomor_resi"]) ? htmlspecialchars($l["nomor_resi"]) : "-" ?>
|
|
</td>
|
|
|
|
<td>
|
|
<?php if (($l["status"] ?? "") === "berhasil"): ?>
|
|
<span class="badge text-bg-success">Berhasil</span>
|
|
<?php else: ?>
|
|
<span class="badge text-bg-danger">Gagal</span>
|
|
<?php endif; ?>
|
|
</td>
|
|
|
|
<td class="text-muted">
|
|
<?= htmlspecialchars($l["pesan"] ?? "-") ?>
|
|
</td>
|
|
|
|
<td>
|
|
<?php if (!empty($l["foto_path"])): ?>
|
|
<a target="_blank" href="<?= htmlspecialchars($l["foto_path"]) ?>">
|
|
<img
|
|
src="<?= htmlspecialchars($l["foto_path"]) ?>"
|
|
style="width:70px;height:70px;object-fit:cover;border-radius:10px;border:1px solid rgba(255,255,255,.2);"
|
|
alt="foto">
|
|
</a>
|
|
<?php else: ?>
|
|
<span class="text-muted">-</span>
|
|
<?php endif; ?>
|
|
</td>
|
|
|
|
<td class="text-center">
|
|
<a
|
|
href="/smart-drop-point/public/hapus_log.php?id=<?= (int)($l["id"] ?? 0) ?>"
|
|
class="btn btn-sm btn-outline-danger"
|
|
onclick="return confirm('Yakin mau hapus log ini?');"
|
|
title="Hapus log">
|
|
<i class="bi bi-trash"></i>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
<?php endwhile; ?>
|
|
|
|
<?php else: ?>
|
|
<tr>
|
|
<td colspan="6" class="text-muted text-center">
|
|
Belum ada log.
|
|
</td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<?php include __DIR__ . "/../partials/footer.php"; ?>
|