64 lines
2.7 KiB
PHP
64 lines
2.7 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();
|
|
$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,
|
|
]
|
|
]);
|