Files
2026-06-10 22:07:47 +07:00

54 lines
2.0 KiB
PHP

<?php require_once __DIR__ . '/../config/db.php'; require_once __DIR__ . '/helpers.php';
$pdo = Database::getConnection();
if ($_SERVER['REQUEST_METHOD'] !== 'GET') sendError('Method not allowed', 405);
// Summary counts
$counts = $pdo->query("SELECT
(SELECT COUNT(*) FROM spbu) as total_spbu,
(SELECT COUNT(*) FROM jalan) as total_jalan,
(SELECT COUNT(*) FROM kavling) as total_kavling,
(SELECT COUNT(*) FROM rumah_ibadah) as total_rumah_ibadah,
(SELECT COUNT(*) FROM warga_miskin) as total_warga_miskin,
(SELECT COUNT(*) FROM kawasan_kumuh) as total_kawasan_kumuh,
(SELECT COUNT(*) FROM spbu WHERE buka_24_jam=1) as spbu_24jam
")->fetch();
// Choropleth: kawasan kumuh + jumlah warga di dalamnya
$sql = "SELECT k.id, k.nama_kawasan, ST_AsGeoJSON(k.geom) as geojson,
COUNT(w.id) as jumlah_warga,
COALESCE(SUM(w.jumlah_tanggungan),0) as total_tanggungan
FROM kawasan_kumuh k
LEFT JOIN warga_miskin w ON ST_Contains(k.geom, w.geom)
GROUP BY k.id";
$stmt = $pdo->query($sql);
$features = [];
$merahCount = 0;
while ($r = $stmt->fetch()) {
$jumlah = (int)$r['jumlah_warga'];
if ($jumlah > 3) $merahCount++;
$features[] = [
'type' => 'Feature',
'geometry' => json_decode($r['geojson']),
'properties' => [
'id' => $r['id'],
'nama_kawasan' => $r['nama_kawasan'],
'jumlah_warga' => $jumlah,
'total_tanggungan' => (int)$r['total_tanggungan'],
]
];
}
// Rumah ibadah by agama
$byAgama = $pdo->query("SELECT agama, COUNT(*) as total FROM rumah_ibadah GROUP BY agama")->fetchAll();
// Kavling by status
$byStatus = $pdo->query("SELECT status_kepemilikan, COUNT(*) as total FROM kavling GROUP BY status_kepemilikan")->fetchAll();
sendSuccess([
'counts' => $counts,
'kawasan_merah' => $merahCount,
'choropleth' => ['type' => 'FeatureCollection', 'features' => $features],
'rumah_by_agama' => $byAgama,
'kavling_by_status' => $byStatus,
], 'Statistik OK');