Files

315 lines
9.1 KiB
PHP

<?php
include "/www/wwwroot/bilspro/config/connect.php"; // Pastikan koneksi PDO disini bernama $pdo
include "/www/wwwroot/bilspro/tracking/kata_kunci.php";
// echo encryptNumberID('627');
// Ambil ID dari URL dan validasi
$id = $_GET['id'];
if ($id) {
try {
$iddecrirt = decryptNumberID($id);
// Query menggunakan prepared statement
$stmt = $pdo->prepare("SELECT * FROM v_tiket_gangguan WHERE id = :id");
$stmt->bindParam(":id", $iddecrirt, PDO::PARAM_INT);
$stmt->execute();
if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
// Tampilkan hasil
// echo "<pre>";
// print_r($row);
// echo "</pre>";
} else {
echo "Data tidak ditemukan.";
exit;
}
} catch (PDOException $e) {
echo "Terjadi kesalahan: " . $e->getMessage();
exit;
}
} else {
echo "Parameter ID tidak valid.";
exit;
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Status Tracking</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Font & Icon -->
<link rel="icon" href="../dist/img/logo-sm.png" type="image/png">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Inter', sans-serif;
background: linear-gradient(to right, #fff5ec, #ffe8d0);
font-size: 13px;
color: #343a40;
}
h4 {
font-size: 16px;
font-weight: 600;
color: #ff8a00;
}
.card {
border: none;
background: #fff;
box-shadow: 0 4px 12px rgba(0,0,0,0.05);
border-radius: 10px;
}
.timeline {
list-style: none;
padding: 0;
position: relative;
}
.timeline::before {
content: '';
position: absolute;
top: 0;
bottom: 0;
width: 3px;
background: #f5c089;
left: 28px;
}
.timeline-item {
position: relative;
padding: 15px 15px 10px 65px;
margin-bottom: 10px;
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
transition: all 0.2s ease;
box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}
.timeline-item:hover {
background: #fff;
box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}
.timeline-item::before {
content: '';
position: absolute;
left: 20px;
top: 22px;
width: 14px;
height: 14px;
background: #ff8a00;
border: 2px solid #fff;
border-radius: 50%;
box-shadow: 0 0 0 3px #fdd2a5;
}
.timeline-item.active::before {
background: #ff8a00;
box-shadow: 0 0 0 4px #ffb469;
}
.timeline-item h5 {
font-size: 13px;
margin: 0 0 3px;
font-weight: 600;
}
.timeline-item p {
font-size: 12px;
color: #6c757d;
margin: 0;
}
.detail-box {
display: none;
margin-top: 10px;
background: #fff5ea;
border-left: 3px solid #ffae42;
padding: 10px 12px;
border-radius: 6px;
}
.timeline-item.show .detail-box {
display: block;
}
.timeline-item img {
max-width: 100%;
border-radius: 6px;
margin-bottom: 6px;
}
.badge-status {
font-size: 12px;
border-radius: 20px;
padding: 4px 10px;
font-weight: 500;
}
.badge-selesai {
background-color: #28a745;
color: white;
}
.badge-proses {
background-color: #ffc107;
color: black;
}
.badge-belum {
background-color: #6c757d;
color: white;
}
.table th i {
color: #ff8a00;
}
@media (max-width: 576px) {
.timeline::before { left: 18px; }
.timeline-item::before { left: 10px; }
.timeline-item { padding-left: 50px; }
}
</style>
</head>
<body>
<div class="container py-3">
<!-- Header -->
<div class="text-center mb-3">
<h4 class="mb-1">Status Tracking</h4>
<span class="badge badge-status badge-selesai" style="font-size: 14px;"><?= $_GET['id'];?></span>
</div>
<!-- Detail -->
<div class="card mb-3">
<div class="card-body p-3">
<table class="table table-borderless table-sm mb-0">
<tr>
<th><i class="fas fa-tools"></i></th><th>Jenis</th><td>:</td><td>Gangguan <?= $row['jenis_tiket']; ?></td></tr>
<tr><th><i class="fas fa-phone-alt"></i></th><th>Nama</th><td>:</td><td><?= $row['nama_pelanggan']; ?></td></tr>
<tr><th><i class="fas fa-home"></i></th><th>Alamat</th><td>:</td><td><?= $row['lokasi']; ?></td></tr>
<tr><th><i class="fas fa-user-circle"></i></th><th>Dibuat</th><td>:</td><td><?= '('.$row['nama_pembuat'] . ') at ' . $row['start_time']; ?></td></tr>
<tr><th><i class="fas fa-info-circle"></i></th><th>Status</th><td>:</td>
<td>
<?php if($row['status'] == 1) { ?>
<span class="badge badge-status badge-primary">Tiket dibuat</span>
<?php } elseif($row['status'] >= 2 && $row['status'] <= 4) { ?>
<span class="badge badge-status badge-proses">Sedang diprose</span>
<?php } else { ?>
<span class="badge badge-status badge-success">Selesai</span>
<?php } ?>
</td>
</tr>
</table>
</div>
</div>
<!-- Timeline -->
<ul class="timeline">
<li class="timeline-item active" onclick="toggleDetail(this)">
<h5>Tiket Telah Dibuat</h5>
<p><?= $row['start_time'];?></p>
<div class="detail-box">
<p><?= $row['permasalahan'];?></p>
</div>
</li>
<?php if($row['status'] >= '2' && $row['status'] <= '10') { ?>
<li class="timeline-item active" onclick="toggleDetail(this)">
<h5>Tiket di Proses</h5>
<p><?= $row['sebelum_proses_time'];?></p>
<div class="detail-box">
<p>Teknisi (<?= $row['nama_penyelesai']; ?>) telah memproses dan akan dilakukan pengerjaan</p>
</div>
</li>
<?php }
$s_time = strtotime($row['sebelum_proses_time']);
$waktuBatas = $s_time + 360;
if($row['status'] >= '2' && $row['status'] <= '10' && strtotime(date('Y-m-d H:i:s')) >= $waktuBatas) { ?>
<li class="timeline-item active" onclick="toggleDetail(this)">
<h5>Dalam Pengerjaan</h5>
<p><?= date('Y-m-d H:i:s', $waktuBatas); ?></p>
<div class="detail-box">
<img src="https://storage.manjapro.net/files/user/<?= $row['img_sebelum']; ?>" alt="Foto">
<p>Teknisi sedang melakukan perbaikan</p>
</div>
</li>
<?php } if($row['status'] >= '4' && $row['status'] <= '10') { ?>
<!--<li class="timeline-item active" onclick="toggleDetail(this)">-->
<!-- <h5>Di Pending</h5>-->
<!-- <p>2025-06-19 09:00</p>-->
<!-- <div class="detail-box">-->
<!-- <img src="https://via.placeholder.com/400x200?text=Jadwal" alt="Foto">-->
<!-- <p>Pengerjaan di pending karena tidak bisa di selesaikan hari ini.</p>-->
<!-- </div>-->
<!--</li>-->
<?php } if($row['status'] >= '3' && $row['status'] <= '10') { ?>
<li class="timeline-item active" onclick="toggleDetail(this)">
<h5>Tiket Selesai Dikerjakan</h5>
<p><?= $row['telah_proses_time'];?></p>
<div class="detail-box">
<img src="https://storage.manjapro.net/files/user/<?= $row['img_selesai']; ?>" alt="Foto">
<p>Teknisi telah melakukan perkerjaan dan akan di verifikasi oleh admin</p>
</div>
</li>
<!--<li class="timeline-item active" onclick="toggleDetail(this)">-->
<!-- <h5>Dalam Pengerjaan</h5>-->
<!-- <p>2025-06-19 08:20</p>-->
<!-- <div class="detail-box">-->
<!-- <img src="../img/user/<?= $row['img_sebelum']; ?>" alt="Foto">-->
<!-- <p>Teknisi sedang di melakukan perbaikan</p>-->
<!-- </div>-->
<!--</li>-->
<?php }
$st_time = strtotime($row['telah_proses_time']);
$waktub = $st_time + 300;
if($row['status'] >= '4' && $row['status'] <= '10' && strtotime(date('Y-m-d H:i:s')) >= $waktub ) { ?>
<li class="timeline-item active" onclick="toggleDetail(this)">
<h5>Sedang Verifikasi</h5>
<p><?= date('Y-m-d H:i:s', $waktub); ?></p>
<div class="detail-box">
<p>Admin sedang memverikasi perkerjaan di lapangan</p>
</div>
</li>
<?php } if($row['status'] >= '5' && $row['status'] <= '10') { ?>
<li class="timeline-item active" onclick="toggleDetail(this)">
<h5>Selesai</h5>
<p><?= $row['verifikasi_time'];?></p>
<div class="detail-box">
<p>Tiket telah di verifikasi dan selesai di dikerjakan</p>
</div>
</li>
<?php } ?>
</ul>
</div>
<script>
function toggleDetail(el) {
document.querySelectorAll('.timeline-item').forEach(item => {
if (item !== el) item.classList.remove('show');
});
el.classList.toggle('show');
}
window.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('.timeline-item').forEach(item => item.classList.remove('show'));
});
</script>
</body>
</html>