feat: complete WebGIS implementation with nominal bantuan and cache busting
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
<?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();
|
||||
$totalNominal = $db->query("SELECT COALESCE(SUM(nominal_bantuan),0) FROM penduduk_miskin WHERE status_bantuan='sudah' 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,
|
||||
'total_nominal' => (float)$totalNominal,
|
||||
'total_nominal_all' => (float)$totalNominalAll,
|
||||
'jenis_stats' => $jenisStats,
|
||||
'kecamatan_stats' => $kecamatanStats,
|
||||
'recent_miskin' => $recentMiskin,
|
||||
]
|
||||
]);
|
||||
Reference in New Issue
Block a user