Files
WebGIS-Poverty-MAP/api/stats.php
T

66 lines
2.8 KiB
PHP

<?php
// ================================================================
// API: Statistics
// ================================================================
require_once __DIR__ . '/../config/database.php';
require_once __DIR__ . '/../includes/functions.php';
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
$db = getDB();
// Total counts
$totalIbadah = $db->query("SELECT COUNT(*) FROM rumah_ibadah")->fetchColumn();
$totalMiskin = $db->query("SELECT COUNT(*) FROM penduduk_miskin")->fetchColumn();
$sudahDibantu = $db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='sudah'")->fetchColumn();
$belumDibantu = $db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='belum'")->fetchColumn();
$menunggu = $db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='menunggu'")->fetchColumn();
$darurat = $db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='darurat'")->fetchColumn();
$totalNominal = $db->query("SELECT COALESCE(SUM(nominal_bantuan),0) FROM penduduk_miskin WHERE status_bantuan IN ('sudah','darurat') AND nominal_bantuan IS NOT NULL")->fetchColumn();
$totalNominalAll = $db->query("SELECT COALESCE(SUM(nominal_bantuan),0) FROM penduduk_miskin WHERE nominal_bantuan IS NOT NULL")->fetchColumn();
// Per jenis ibadah
$jenisStats = $db->query("
SELECT jenis, COUNT(*) as total,
(SELECT COUNT(*) FROM penduduk_miskin pm WHERE pm.rumah_ibadah_id = ri.id) AS binaan
FROM rumah_ibadah ri
GROUP BY jenis ORDER BY total DESC
")->fetchAll();
// Per kecamatan (top 5)
$kecamatanStats = $db->query("
SELECT kecamatan, COUNT(*) as total,
SUM(CASE WHEN status_bantuan='sudah' THEN 1 ELSE 0 END) AS sudah,
SUM(CASE WHEN status_bantuan='belum' THEN 1 ELSE 0 END) AS belum
FROM penduduk_miskin
WHERE kecamatan != '' AND kecamatan IS NOT NULL
GROUP BY kecamatan ORDER BY total DESC LIMIT 5
")->fetchAll();
// Data terbaru (5 data)
$recentMiskin = $db->query("
SELECT pm.id, pm.kk_nama, pm.status_bantuan, pm.created_at,
ri.nama AS ibadah_nama
FROM penduduk_miskin pm
LEFT JOIN rumah_ibadah ri ON pm.rumah_ibadah_id = ri.id
ORDER BY pm.created_at DESC LIMIT 5
")->fetchAll();
jsonResponse([
'success' => true,
'data' => [
'total_ibadah' => (int)$totalIbadah,
'total_miskin' => (int)$totalMiskin,
'sudah_dibantu' => (int)$sudahDibantu,
'belum_dibantu' => (int)$belumDibantu,
'menunggu' => (int)$menunggu,
'darurat' => (int)$darurat,
'total_nominal' => (float)$totalNominal,
'total_nominal_all' => (float)$totalNominalAll,
'jenis_stats' => $jenisStats,
'kecamatan_stats' => $kecamatanStats,
'recent_miskin' => $recentMiskin,
]
]);