diff --git a/bantuan.php b/bantuan.php new file mode 100644 index 0000000..6ea6fde --- /dev/null +++ b/bantuan.php @@ -0,0 +1,248 @@ +query(" + SELECT bt.*, rm.nama_kepala_keluarga, rm.kelurahan, + ri.nama_ibadah, b.nama_bencana, u.nama_lengkap AS petugas_user + FROM bantuan_tersalur bt + LEFT JOIN rumah_miskin rm ON bt.warga_id = rm.id + LEFT JOIN rumah_ibadah ri ON bt.ibadah_id = ri.id + LEFT JOIN bencana b ON bt.bencana_id = b.id + LEFT JOIN users u ON bt.disalurkan_oleh = u.id + $where + ORDER BY bt.created_at DESC +"); +$total = $data->num_rows; + +// Untuk dropdown pilih warga +$semuaKpm = $conn->query("SELECT id, nama_kepala_keluarga, kelurahan FROM rumah_miskin ORDER BY nama_kepala_keluarga ASC"); + +include 'includes/sidebar.php'; +?> + + + +
+
+

+ ๐ŸŽ Bantuan Tersalur +

+

+ Total transaksi logistik & bantuan sosial tercatat +

+
+ +
+ +
+ + Bantuan yang diinput di sini akan otomatis diteruskan ke halaman Konfirmasi Bantuan pada akun Relawan / Pengurus untuk diverifikasi penerimaannya di lapangan. +
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ +
+
+

Riwayat Distribusi Bantuan

+ data +
+
+ + + + + + + + + + + + + + + + + fetch_assoc()): + $konfStatus = $r['status_konfirmasi'] ?? 'Menunggu'; + $konfBadge = ['Menunggu'=>'badge-yellow','Dikonfirmasi'=>'badge-green','Ditolak'=>'badge-red'][$konfStatus] ?? 'badge-gray'; + ?> + + + + + + + + + + + + +
#PenerimaJenis BantuanJumlahTanggalPetugas LapanganStatus KonfirmasiAksi
Belum ada data bantuan
+
+
+ + + +
+ + + + - + +
+
+
+ + + + + + \ No newline at end of file diff --git a/bencana.php b/bencana.php new file mode 100644 index 0000000..e505b29 --- /dev/null +++ b/bencana.php @@ -0,0 +1,516 @@ +query("SELECT bd.*, rm.nama_kepala_keluarga, rm.kelurahan + FROM bencana_terdampak bd + JOIN rumah_miskin rm ON bd.warga_id = rm.id + WHERE bd.bencana_id = $bid + ORDER BY bd.id DESC"); + $list = []; + while ($r = $q->fetch_assoc()) { + $list[] = $r; + } + echo json_encode(['status' => 'sukses', 'data' => $list]); + exit; + } + + // 2. Tambah warga terdampak (Tandai & Prioritaskan) + if ($_GET['ajax_aksi'] === 'tambah_terdampak' && $_SERVER['REQUEST_METHOD'] === 'POST') { + $bid = intval($_POST['bencana_id']); + $wid = intval($_POST['warga_id']); + $tingkat = bersih($_POST['tingkat'], $conn); + $ket = bersih($_POST['keterangan'], $conn); + + // Cek apakah warga sudah ditandai di bencana ini sebelumnya + $cek = $conn->query("SELECT id FROM bencana_terdampak WHERE bencana_id = $bid AND warga_id = $wid"); + if ($cek->num_rows > 0) { + echo json_encode(['status' => 'gagal', 'pesan' => 'Warga ini sudah ditandai terdampak dalam bencana ini!']); + exit; + } + + // Insert ke bencana_terdampak + $insert = $conn->query("INSERT INTO bencana_terdampak (bencana_id, warga_id, tingkat, keterangan) VALUES ($bid, $wid, '$tingkat', '$ket')"); + if ($insert) { + // Update status prioritas warga menjadi 1 (Prioritas Bencana) di tabel rumah_miskin + $conn->query("UPDATE rumah_miskin SET prioritas = 1, updated_at = NOW() WHERE id = $wid"); + echo json_encode(['status' => 'sukses']); + } else { + echo json_encode(['status' => 'gagal', 'pesan' => 'Gagal menyimpan data ke database.']); + } + exit; + } + + // 3. Hapus warga terdampak (Batalkan Prioritas) + if ($_GET['ajax_aksi'] === 'hapus_terdampak' && $_SERVER['REQUEST_METHOD'] === 'POST') { + $bd_id = intval($_POST['id']); + + // Ambil warga_id terlebih dahulu sebelum dihapus untuk keperluan update prioritas + $data_bd = $conn->query("SELECT warga_id FROM bencana_terdampak WHERE id = $bd_id")->fetch_assoc(); + + if ($data_bd) { + $wid = $data_bd['warga_id']; + // Hapus dari riwayat terdampak bencana + $delete = $conn->query("DELETE FROM bencana_terdampak WHERE id = $bd_id"); + if ($delete) { + // Cek apakah warga ini masih terlibat di bencana aktif lainnya + $cek_lain = $conn->query("SELECT bd.id FROM bencana_terdampak bd + JOIN bencana b ON bd.bencana_id = b.id + WHERE bd.warga_id = $wid AND b.status = 'Aktif'"); + if ($cek_lain->num_rows === 0) { + // Jika tidak ada bencana aktif lain, kembalikan status prioritasnya ke 0 + $conn->query("UPDATE rumah_miskin SET prioritas = 0, updated_at = NOW() WHERE id = $wid"); + } + echo json_encode(['status' => 'sukses']); + } else { + echo json_encode(['status' => 'gagal', 'pesan' => 'Gagal menghapus data terdampak.']); + } + } else { + echo json_encode(['status' => 'gagal', 'pesan' => 'Data tidak ditemukan.']); + } + exit; + } +} + +// Query data utama halaman +$bencanaList = $conn->query("SELECT b.*, u.nama_lengkap AS petugas, COUNT(bd.id) AS jml_terdampak FROM bencana b LEFT JOIN users u ON b.dibuat_oleh=u.id LEFT JOIN bencana_terdampak bd ON b.id=bd.bencana_id GROUP BY b.id ORDER BY b.status ASC, b.tanggal DESC"); +$semuaKpm = $conn->query("SELECT id, nama_kepala_keluarga, kelurahan, kondisi_rumah FROM rumah_miskin ORDER BY nama_kepala_keluarga ASC"); + +include 'includes/sidebar.php'; +?> + + + +
+
+

+ ๐ŸŒ‹ Bencana & Prioritas Warga +

+

+ Catat kejadian bencana dan tandai warga terdampak sebagai prioritas bantuan +

+
+ + + +
+ +query("SELECT b.*, COUNT(bd.id) AS jml FROM bencana b LEFT JOIN bencana_terdampak bd ON b.id=bd.bencana_id WHERE b.status='Aktif' GROUP BY b.id"); +if ($aktif->num_rows > 0): ?> +
+
โš ๏ธ Bencana Aktif Saat Ini
+
+ fetch_assoc()): ?> +
+
+
ยท
+
warga terdampak
+ +
+ +
+
+ + +
+

Riwayat Bencana

+
+ + + + + + + + + num_rows === 0): ?> + + fetch_assoc()): ?> + + + + + + + + + + + + +
#Nama BencanaJenisTanggalLokasiTerdampakStatusAksi
Belum ada data bencana
+
+
+
'badge-blue','Kebakaran'=>'badge-red','Gempa Bumi'=>'badge-orange','Longsor'=>'badge-yellow','Angin Puting Beliung'=>'badge-purple','Lainnya'=>'badge-gray']; + echo ''.$b['jenis'].''; + ?> + + KK + + + + + +
+ + + + + + + +
+
+
+
+ +
+
+

Warga Prioritas Bencana

+ query("SELECT COUNT(*) AS c FROM rumah_miskin WHERE prioritas=1")->fetch_assoc()['c']; + echo $p.' KK'; + ?> +
+
+ + + + query("SELECT rm.*, bt.nama_bencana, bd.tingkat FROM rumah_miskin rm LEFT JOIN bencana_terdampak bd ON rm.id=bd.warga_id LEFT JOIN bencana bt ON bd.bencana_id=bt.id WHERE rm.prioritas=1 ORDER BY rm.updated_at DESC"); + if ($pList->num_rows === 0): + ?> + + fetch_assoc()): ?> + + + + + + + + + +
Nama KKKondisi RumahTerdampak BencanaTingkatStatus Bantuan
Tidak ada warga prioritas saat ini
+ + + 'badge-yellow','Sedang'=>'badge-orange','Berat'=>'badge-red']; + echo ''.($r['tingkat']??'-').''; + ?>'badge-green','Belum Terbantu'=>'badge-red','Sudah Menerima'=>'badge-blue']; + echo ''.$r['status_bantuan'].''; + ?>
+
+
+ + + + + + + + \ No newline at end of file diff --git a/dashboard-admin.php b/dashboard-admin.php new file mode 100644 index 0000000..2d08fb3 --- /dev/null +++ b/dashboard-admin.php @@ -0,0 +1,291 @@ +query("SELECT COUNT(*) AS c FROM rumah_ibadah")->fetch_assoc()['c'] ?? 0; +$totalKpm = $conn->query("SELECT COUNT(*) AS c FROM rumah_miskin")->fetch_assoc()['c'] ?? 0; +$terjangkau = $conn->query("SELECT COUNT(*) AS c FROM rumah_miskin WHERE status_bantuan='Terjangkau'")->fetch_assoc()['c'] ?? 0; +$blankSpot = $conn->query("SELECT COUNT(*) AS c FROM rumah_miskin WHERE status_bantuan='Belum Terbantu'")->fetch_assoc()['c'] ?? 0; +$totalBantuan = $conn->query("SELECT COUNT(*) AS c FROM bantuan_tersalur")->fetch_assoc()['c'] ?? 0; +$bencanaAktif = $conn->query("SELECT COUNT(*) AS c FROM bencana WHERE status='Aktif'")->fetch_assoc()['c'] ?? 0; +$prioritas = $conn->query("SELECT COUNT(*) AS c FROM rumah_miskin WHERE prioritas=1")->fetch_assoc()['c'] ?? 0; + +// Mengambil statistik tambahan khusus admin (Manajemen User) +$totalUser = $conn->query("SELECT COUNT(*) AS c FROM users")->fetch_assoc()['c'] ?? 0; +$userAktif = $conn->query("SELECT COUNT(*) AS c FROM users WHERE aktif=1")->fetch_assoc()['c'] ?? 0; + +// Menghitung persentase capaian rasio jangkauan bantuan +$pct = $totalKpm > 0 ? round($terjangkau / $totalKpm * 100) : 0; + +// 2. MENGAMBIL DATA TERBARU UNTUK PREVIEW LOG TABEL (LIMIT 5) +$kpmBaru = $conn->query("SELECT rm.nama_kepala_keluarga, rm.nik, rm.kelurahan, rm.kondisi_rumah, rm.prioritas FROM rumah_miskin rm ORDER BY rm.created_at DESC LIMIT 5"); +$bantuanBaru = $conn->query("SELECT bt.jenis_bantuan, bt.jumlah, bt.tanggal, rm.nama_kepala_keluarga FROM bantuan_tersalur bt LEFT JOIN rumah_miskin rm ON bt.warga_id=rm.id ORDER BY bt.created_at DESC LIMIT 5"); + +// MEMANGGIL SIDEBAR DINAMIS (Otomatis menyambung dan layout tidak akan pecah) +include 'includes/sidebar.php'; +?> + + + + + + Panel Administrasi Pusat - Poverty Mapping + + + + + + + +
+ +
+

Selamat Datang Kembali,

+
+ +
+
+
+
Manajemen Akun
+
Akun
+
User Aktif
+
+
+ +
+
+ +
+
+
Total KPM
+
+
Keluarga terdata
+
+
+ +
+
+ +
+
+
Blank Spot
+
+
Belum terjangkau
+
+
+ +
+
+ +
+
+
Bencana Aktif
+
+
0 ? $prioritas.' KPM diprioritaskan' : 'Sistem kondusif' ?>
+
+
+ +
+
+
+ +
+
+
+

Rasio Capaian Pengentasan Kemiskinan Makro

+

Persentase keseluruhan KPM yang berhasil masuk dalam jangkauan koordinasi pos rumah ibadah

+
+
%
+
+
+
+
+
+ Terjangkau: KPM + Blank Spot: KPM + Titik Pos Rumah Ibadah: Titik + Total Penyaluran: Kali +
+
+ +
+ +
+
+

Pendaftaran KPM Terbaru

+ Lihat semua +
+ + + + + + num_rows === 0): ?> + + fetch_assoc()): + $kondisiClass = 'badge-info'; + if (in_array($k['kondisi_rumah'], ['Sangat Parah', 'Sangat Tidak Layak'])) $kondisiClass = 'badge-danger'; + elseif (in_array($k['kondisi_rumah'], ['Parah', 'Tidak Layak'])) $kondisiClass = 'badge-warning'; + elseif (in_array($k['kondisi_rumah'], ['Cukup Baik', 'Layak'])) $kondisiClass = 'badge-success'; + ?> + + + + + + + +
Nama KKKelurahanKondisi Rumah
Belum ada entri data KPM terdaftar.
+
+
NIK:
+
+ + + + +
+
+ +
+
+

Transaksi Distribusi Bantuan

+ Lihat semua +
+ + + + + + num_rows === 0): ?> + + fetch_assoc()): ?> + + + + + + + +
Penerima KPMPaket BantuanTanggal Penyaluran
Belum ada log transaksi penyaluran bantuan.
+ + +
+ +
+
+ +
+
+ + + + + + \ No newline at end of file