query("SELECT COUNT(*) AS total_kk, IFNULL(SUM(jumlah_anggota), 0) AS total_jiwa FROM penduduk_miskin"); $stats['penduduk_miskin'] = $resPm->fetch_assoc(); // 2. Rumah Ibadah (Total) $resRi = $db->query("SELECT COUNT(*) AS total FROM rumah_ibadah"); $stats['rumah_ibadah'] = $resRi->fetch_assoc(); // 6. Log Bantuan (Total log & Nilai total bantuan) $resLb = $db->query("SELECT COUNT(*) AS total_count, IFNULL(SUM(nilai_bantuan), 0) AS total_nilai FROM log_bantuan"); $stats['log_bantuan'] = $resLb->fetch_assoc(); // 7. Proximity (Dalam vs Luar Radius) $resProx = $db->query("SELECT status_proximity, COUNT(*) AS count FROM penduduk_miskin GROUP BY status_proximity"); $proximity = ['dalam_radius' => 0, 'luar_radius' => 0]; while ($row = $resProx->fetch_assoc()) { $key = $row['status_proximity'] === 'dalam_radius' ? 'dalam_radius' : 'luar_radius'; $proximity[$key] += (int)$row['count']; } $stats['proximity'] = $proximity; // 8. Tipe Bantuan (Pemberdayaan vs Konsumtif) $resTipe = $db->query("SELECT tipe_bantuan, COUNT(*) AS count FROM log_bantuan GROUP BY tipe_bantuan"); $tipeBantuan = ['Pemberdayaan' => 0, 'Konsumtif' => 0]; while ($row = $resTipe->fetch_assoc()) { $key = $row['tipe_bantuan'] === 'Pemberdayaan' ? 'Pemberdayaan' : 'Konsumtif'; $tipeBantuan[$key] = (int)$row['count']; } $stats['tipe_bantuan'] = $tipeBantuan; // 9. Rumah Ibadah Teraktif (Top 5) $resRiAktif = $db->query(" SELECT ri.nama, COUNT(lb.id) AS count, IFNULL(SUM(lb.nilai_bantuan), 0) AS nilai FROM log_bantuan lb JOIN rumah_ibadah ri ON ri.id = lb.rumah_ibadah_id GROUP BY lb.rumah_ibadah_id ORDER BY count DESC LIMIT 5 "); $riAktif = []; while ($row = $resRiAktif->fetch_assoc()) { $row['count'] = (int)$row['count']; $row['nilai'] = (float)$row['nilai']; $riAktif[] = $row; } $stats['ri_teraktif'] = $riAktif; // 10. Bantuan Terbaru (Top 5) $resBantuanBaru = $db->query(" SELECT lb.id, lb.tipe_bantuan, lb.sub_kategori, lb.keterangan, lb.tanggal_bantuan, lb.nilai_bantuan, pm.nama AS nama_penduduk, ri.nama AS nama_rumah_ibadah FROM log_bantuan lb JOIN penduduk_miskin pm ON pm.id = lb.penduduk_miskin_id JOIN rumah_ibadah ri ON ri.id = lb.rumah_ibadah_id ORDER BY lb.tanggal_bantuan DESC, lb.id DESC LIMIT 5 "); $bantuanBaru = []; while ($row = $resBantuanBaru->fetch_assoc()) { $row['nilai_bantuan'] = $row['nilai_bantuan'] ? (float)$row['nilai_bantuan'] : 0; $bantuanBaru[] = $row; } $stats['bantuan_terbaru'] = $bantuanBaru; sendSuccess($stats);