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); }