36 lines
1.8 KiB
PHP
36 lines
1.8 KiB
PHP
<?php
|
|
include 'koneksi.php';
|
|
header('Content-Type: application/json');
|
|
|
|
$stats = [];
|
|
|
|
// Total penduduk hidup
|
|
$r = $conn->query("SELECT COUNT(*) AS total, SUM(status_ekonomi='miskin') AS miskin, SUM(status_ekonomi='rentan') AS rentan, SUM(status_ekonomi='mampu') AS mampu FROM penduduk WHERE status_hidup='hidup'");
|
|
$stats['penduduk'] = $r->fetch_assoc();
|
|
|
|
// Rumah ibadah
|
|
$r2 = $conn->query("SELECT COUNT(*) AS total FROM rumah_ibadah");
|
|
$stats['rumah_ibadah'] = $r2->fetch_assoc();
|
|
|
|
// Laporan pending / darurat
|
|
$r3 = $conn->query("SELECT COUNT(*) AS total, SUM(urgensi='darurat') AS darurat, SUM(status='pending') AS pending FROM laporan");
|
|
$stats['laporan'] = $r3->fetch_assoc();
|
|
|
|
// Bantuan bulan ini
|
|
$r4 = $conn->query("SELECT COUNT(*) AS total, SUM(status='selesai') AS selesai FROM histori_bantuan WHERE MONTH(tanggal)=MONTH(CURDATE()) AND YEAR(tanggal)=YEAR(CURDATE())");
|
|
$stats['bantuan_bulan_ini'] = $r4->fetch_assoc();
|
|
|
|
// Belum pernah dibantu (miskin)
|
|
$r5 = $conn->query("SELECT COUNT(*) AS total FROM penduduk p WHERE p.status_ekonomi='miskin' AND p.status_hidup='hidup' AND NOT EXISTS (SELECT 1 FROM histori_bantuan h WHERE h.penduduk_id=p.id AND h.status='selesai')");
|
|
$stats['miskin_belum_dibantu'] = $r5->fetch_assoc();
|
|
|
|
// Sebaran per rumah ibadah
|
|
$r6 = $conn->query("SELECT ri.nama, ri.jenis, COUNT(p.id) AS jumlah_penduduk, SUM(p.status_ekonomi='miskin') AS miskin FROM rumah_ibadah ri LEFT JOIN penduduk p ON p.rumah_ibadah_id=ri.id AND p.status_hidup='hidup' GROUP BY ri.id");
|
|
$stats['per_rumah_ibadah'] = $r6->fetch_all(MYSQLI_ASSOC);
|
|
|
|
// Tren bantuan 6 bulan terakhir
|
|
$r7 = $conn->query("SELECT DATE_FORMAT(tanggal,'%Y-%m') AS bulan, COUNT(*) AS total FROM histori_bantuan WHERE tanggal >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH) GROUP BY bulan ORDER BY bulan");
|
|
$stats['tren_bantuan'] = $r7->fetch_all(MYSQLI_ASSOC);
|
|
|
|
echo json_encode($stats, JSON_UNESCAPED_UNICODE);
|