(int)$_SESSION['user_id'], 'role' => $_SESSION['role']]; $filter = $_GET['filter'] ?? 'semua'; $msg = ''; $err = ''; // Update status laporan if (isset($_POST['update_status']) && in_array($currentUser['role'], ['admin','pengurus'])) { $id = (int)($_POST['lap_id'] ?? 0); $status = $_POST['status'] ?? ''; $catatan = trim($_POST['catatan'] ?? ''); $valid = ['diverifikasi','diproses','selesai','ditolak']; if ($id > 0 && in_array($status, $valid)) { try { $sets = ['status=:s','updated_at=NOW()']; $params = [':s'=>$status,':id'=>$id]; if ($status === 'diverifikasi') { $sets[] = 'diverifikasi_oleh=:v'; $params[':v'] = $currentUser['id']; } if ($status === 'diproses') { $sets[] = 'ditangani_oleh=:t'; $params[':t'] = $currentUser['id']; } if ($status === 'selesai') { $sets[] = 'tanggal_selesai=NOW()'; } if ($catatan) { $sets[] = 'catatan_verifikasi=:c'; $params[':c'] = $catatan; } $pdo->prepare("UPDATE laporan SET ".implode(',',$sets)." WHERE id=:id")->execute($params); logAktivitas($pdo, $currentUser['id'], 'UPDATE', 'laporan', (string)$id, null, ['status'=>$status]); $msg = "Status laporan #$id diperbarui ke '$status'."; } catch(Exception $e) { $err = $e->getMessage(); } } } // Ambil laporan $where = []; $params = []; if ($filter === 'pending') { $where[] = "status='pending'"; } if ($filter === 'darurat') { $where[] = "tingkat_urgensi IN ('darurat','tinggi')"; } if ($filter === 'diproses') { $where[] = "status IN ('diverifikasi','diproses')"; } if ($filter === 'selesai') { $where[] = "status='selesai'"; } $whereStr = $where ? 'WHERE '.implode(' AND ',$where) : ''; $rows = []; try { $rows = $pdo->query(" SELECT l.*, p.nama_lengkap AS nama_terdampak, u.nama AS nama_verifikator FROM laporan l LEFT JOIN penduduk p ON p.nik=l.nik_terdampak LEFT JOIN users u ON u.id=l.diverifikasi_oleh $whereStr ORDER BY CASE l.tingkat_urgensi WHEN 'darurat' THEN 1 WHEN 'tinggi' THEN 2 ELSE 3 END, CASE l.status WHEN 'pending' THEN 1 WHEN 'diverifikasi' THEN 2 ELSE 3 END, l.created_at DESC ")->fetchAll(); } catch(Exception $e) { $err = $e->getMessage(); } render_header('Manajemen Laporan'); ?>