query( "SELECT ri.*, k.nama AS kelurahan, k.kecamatan FROM rumah_ibadah ri LEFT JOIN kelurahan k ON ri.kelurahan_id = k.id ORDER BY ri.tipe, ri.nama" )->fetchAll(); jsonOk($rows); } if ($method === 'POST') { requireEdit(); $d = body(); if (empty($d['nama'])) jsonError('Nama wajib diisi.'); if (!isset($d['lat'], $d['lng'])) jsonError('Koordinat wajib diisi.'); $ikonMap = ['masjid'=>'🕌','gereja'=>'⛪','pura'=>'🛕','vihara'=>'🏛️','klenteng'=>'🏯']; $tipe = $d['tipe'] ?? 'masjid'; $stmt = $db->prepare( "INSERT INTO rumah_ibadah (nama, tipe, ikon, lat, lng, kapasitas, kelurahan_id, alamat) VALUES (?,?,?,?,?,?,?,?)" ); $stmt->execute([ $d['nama'], $tipe, $ikonMap[$tipe] ?? '🛕', $d['lat'], $d['lng'], $d['kapasitas'] ?? 0, !empty($d['kelurahan_id']) ? $d['kelurahan_id'] : null, $d['alamat'] ?? '' ]); jsonOk(['id' => $db->lastInsertId()], 'Rumah ibadah berhasil ditambahkan'); } if ($method === 'PUT') { requireEdit(); $id = getParam('id'); if (!$id) jsonError('ID wajib disertakan.'); $d = body(); if (empty($d['nama'])) jsonError('Nama wajib diisi.'); if (!isset($d['lat'], $d['lng'])) jsonError('Koordinat wajib diisi.'); $ikonMap = ['masjid'=>'🕌','gereja'=>'⛪','pura'=>'🛕','vihara'=>'🏛️','klenteng'=>'🏯']; $tipe = $d['tipe'] ?? 'masjid'; $stmt = $db->prepare( "UPDATE rumah_ibadah SET nama=?, tipe=?, ikon=?, lat=?, lng=?, kapasitas=?, kelurahan_id=?, alamat=? WHERE id=?" ); $stmt->execute([ $d['nama'], $tipe, $ikonMap[$tipe] ?? '🛕', $d['lat'], $d['lng'], $d['kapasitas'] ?? 0, !empty($d['kelurahan_id']) ? $d['kelurahan_id'] : null, $d['alamat'] ?? '', $id ]); jsonOk(null, 'Rumah ibadah berhasil diperbarui'); } if ($method === 'DELETE') { requireEdit(); $id = getParam('id'); if (!$id) jsonError('ID wajib disertakan.'); $db->prepare("DELETE FROM rumah_ibadah WHERE id=?")->execute([$id]); jsonOk(null, 'Rumah ibadah berhasil dihapus'); } jsonError('Method tidak valid', 405);