query("SELECT (SELECT COUNT(*) FROM warga_miskin) AS total_warga, (SELECT COUNT(*) FROM warga_miskin WHERE status_verifikasi='terverifikasi') AS terverifikasi, (SELECT COUNT(*) FROM warga_miskin WHERE status_verifikasi='belum') AS belum, (SELECT COUNT(*) FROM warga_miskin WHERE status_verifikasi='perlu_tinjauan') AS perlu_tinjauan, (SELECT COUNT(*) FROM wilayah) AS total_wilayah, (SELECT COUNT(DISTINCT warga_id) FROM bantuan_sosial WHERE is_aktif=1) AS warga_dibantu, (SELECT COUNT(*) FROM users) AS total_users ")->fetch(); $total = (int)$stats['total_warga']; $dibantu = (int)$stats['warga_dibantu']; $cakupan = $total > 0 ? round($dibantu / $total * 100, 1) : 0; $belumDibantu = $total - $dibantu; // Zona prioritas: kelurahan dengan % miskin > 5% $zona = $pdo->query(" SELECT COUNT(*) AS cnt FROM ( SELECT w.id, (COUNT(wm.id) / NULLIF(w.jumlah_penduduk,0) * 100) AS persen FROM wilayah w LEFT JOIN warga_miskin wm ON ST_Contains(w.geom, wm.geom) GROUP BY w.id HAVING persen > 5 ) sub ")->fetch(); $zonaPrioritas = (int)($zona['cnt'] ?? 0); // Data terbaru $recentWarga = $pdo->query(" SELECT w.nama_kk, w.penghasilan, w.status_verifikasi, wl.nama AS kelurahan, w.created_at FROM warga_miskin w LEFT JOIN wilayah wl ON wl.id=w.wilayah_id ORDER BY w.id DESC LIMIT 6 ")->fetchAll(); // Rekap per kelurahan $rekapWilayah = $pdo->query(" SELECT w.nama, w.jumlah_penduduk, COUNT(wm.id) AS miskin FROM wilayah w LEFT JOIN warga_miskin wm ON ST_Contains(w.geom, wm.geom) GROUP BY w.id ORDER BY miskin DESC ")->fetchAll(); $pageTitle = 'Dashboard'; $activeNav = 'dashboard'; require_once __DIR__ . '/partials/header.php'; function vBadge($s) { return match ($s) { 'terverifikasi' => 'Terverifikasi', 'perlu_tinjauan' => 'Perlu Tinjauan', default => 'Belum', }; } ?>
Visualisasikan sebaran kemiskinan (choropleth & heatmap), kelola data rumah tangga, dan analisis zona prioritas.
Belum ada data wilayah.
Belum ada data warga