53 lines
2.7 KiB
PHP
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);
|
|
}
|