edit files
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
<?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');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user