74 lines
3.0 KiB
PHP
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');
|
|
}
|
|
}
|