Files
2026-06-10 19:48:00 +07:00

74 lines
3.0 KiB
PHP

<?php
// api/controllers/RumahIbadahController.php
class RumahIbadahController {
public function index(): void {
$db = getDB();
$rows = $db->query(
"SELECT ri.*, u.nama_lengkap AS nama_pengurus,
COUNT(DISTINCT k.id) AS jumlah_kk,
COUNT(DISTINCT p.nik) AS jumlah_penduduk
FROM rumah_ibadah ri
LEFT JOIN user u ON ri.id_user=u.id
LEFT JOIN keluarga k ON k.id_rumah_ibadah=ri.id
LEFT JOIN penduduk p ON p.id_keluarga=k.id AND p.status_hidup='hidup'
WHERE ri.aktif=1
GROUP BY ri.id ORDER BY ri.jenis, ri.nama"
)->fetchAll();
jsonSuccess($rows);
}
public function show(string $id): void {
$db = getDB();
$stmt = $db->prepare("SELECT ri.*, u.nama_lengkap AS nama_pengurus FROM rumah_ibadah ri LEFT JOIN user u ON ri.id_user=u.id WHERE ri.id=?");
$stmt->execute([$id]);
$row = $stmt->fetch();
if (!$row) jsonError('Rumah ibadah tidak ditemukan', 404);
jsonSuccess($row);
}
public function store(): void {
requireAuth([ROLE_ADMIN, ROLE_PENGURUS]);
$body = getBody();
$errs = required($body, ['nama','jenis','lat','lng']);
if ($errs) jsonError(implode('; ',$errs));
$db = getDB();
$db->prepare(
"INSERT INTO rumah_ibadah (id_user,nama,jenis,alamat,lat,lng,radius_meter,kontak,kecamatan,kelurahan)
VALUES (?,?,?,?,?,?,?,?,?,?)"
)->execute([
$body['id_user'] ?? null,
sanitize($body['nama']),
$body['jenis'],
sanitize($body['alamat'] ?? ''),
$body['lat'], $body['lng'],
(int)($body['radius_meter'] ?? 300),
sanitize($body['kontak'] ?? ''),
sanitize($body['kecamatan'] ?? ''),
sanitize($body['kelurahan'] ?? ''),
]);
jsonSuccess(['id' => $db->lastInsertId()], 'Rumah ibadah ditambahkan', 201);
}
public function update(string $id): void {
requireAuth([ROLE_ADMIN, ROLE_PENGURUS]);
$body = getBody();
$db = getDB();
$db->prepare(
"UPDATE rumah_ibadah SET nama=?,jenis=?,alamat=?,lat=?,lng=?,radius_meter=?,kontak=?,kecamatan=?,kelurahan=? WHERE id=?"
)->execute([
sanitize($body['nama'] ?? ''),
$body['jenis'] ?? 'Masjid',
sanitize($body['alamat'] ?? ''),
$body['lat'] ?? 0, $body['lng'] ?? 0,
(int)($body['radius_meter'] ?? 300),
sanitize($body['kontak'] ?? ''),
sanitize($body['kecamatan'] ?? ''),
sanitize($body['kelurahan'] ?? ''),
$id,
]);
jsonSuccess([], 'Rumah ibadah diperbarui');
}
public function destroy(string $id): void {
requireAuth([ROLE_ADMIN]);
getDB()->prepare("UPDATE rumah_ibadah SET aktif=0 WHERE id=?")->execute([$id]);
jsonSuccess([], 'Rumah ibadah dinonaktifkan');
}
}