Files
WebGis_Final_Project/05/api/rumah_ibadah.php
T
2026-06-10 18:32:52 +07:00

53 lines
2.7 KiB
PHP

<?php
require_once __DIR__ . '/../config.php';
$user = requireLogin();
$method = $_SERVER['REQUEST_METHOD'];
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
$db = getDB();
switch ($method) {
case 'GET':
if ($id) {
$st = $db->prepare("SELECT ri.*,
(SELECT COUNT(*) FROM keluarga k WHERE k.rumah_ibadah_id=ri.id) as jumlah_kk,
(SELECT COUNT(*) FROM keluarga k JOIN penduduk p ON p.keluarga_id=k.id WHERE k.rumah_ibadah_id=ri.id AND p.status_hidup='hidup') as jumlah_jiwa,
(SELECT COUNT(*) FROM keluarga k WHERE k.rumah_ibadah_id=ri.id AND k.status_ekonomi='miskin') as kk_miskin
FROM rumah_ibadah ri WHERE ri.id=?");
$st->execute([$id]); jsonOk($st->fetch()); break;
}
$rows = $db->query("SELECT ri.id, ri.nama, ri.jenis, ri.kontak, ri.lat, ri.lng, ri.alamat, ri.kelurahan,
(SELECT COUNT(*) FROM keluarga k WHERE k.rumah_ibadah_id=ri.id) as jumlah_kk,
(SELECT COUNT(*) FROM keluarga k WHERE k.rumah_ibadah_id=ri.id AND k.status_ekonomi='miskin') as kk_miskin
FROM rumah_ibadah ri ORDER BY ri.nama")->fetchAll();
foreach ($rows as &$r) { $r['id']=(int)$r['id']; $r['lat']=(float)$r['lat']; $r['lng']=(float)$r['lng']; }
jsonOk($rows); break;
case 'POST':
requireRole(['superadmin']);
$b = json_decode(file_get_contents('php://input'), true);
$nama = sanitize($b['nama'] ?? '');
if (!$nama) jsonErr('Nama wajib diisi.');
$db->prepare("INSERT INTO rumah_ibadah (nama,jenis,kontak,lat,lng,alamat,kelurahan) VALUES (?,?,?,?,?,?,?)")
->execute([$nama,$b['jenis']??'Masjid',sanitize($b['kontak']??''),(float)($b['lat']??0),(float)($b['lng']??0),sanitize($b['alamat']??''),sanitize($b['kelurahan']??'')]);
jsonOk(['id'=>(int)$db->lastInsertId()],'Rumah ibadah ditambahkan.');
break;
case 'PUT':
requireRole(['superadmin','pengurus']);
if (!$id) jsonErr('ID tidak valid.');
$b = json_decode(file_get_contents('php://input'), true);
$db->prepare("UPDATE rumah_ibadah SET nama=?,jenis=?,kontak=?,lat=?,lng=?,alamat=?,kelurahan=?,updated_at=NOW() WHERE id=?")
->execute([sanitize($b['nama']??''),$b['jenis']??'Masjid',sanitize($b['kontak']??''),(float)($b['lat']??0),(float)($b['lng']??0),sanitize($b['alamat']??''),sanitize($b['kelurahan']??''),$id]);
jsonOk(null,'Data diperbarui.');
break;
case 'DELETE':
requireRole(['superadmin']);
if (!$id) jsonErr('ID tidak valid.');
$db->prepare("DELETE FROM rumah_ibadah WHERE id=?")->execute([$id]);
jsonOk(null,'Data dihapus.');
break;
default: jsonErr('Method tidak didukung.', 405);
}