0) { $stmt = $db->prepare( "SELECT id, nama, jenis, alamat, no_wa, latitude, longitude, radius_meter, created_at FROM rumah_ibadah WHERE id = ?" ); $stmt->bind_param('i', $id); $stmt->execute(); $row = $stmt->get_result()->fetch_assoc(); if ($row) { $row['latitude'] = (float)$row['latitude']; $row['longitude'] = (float)$row['longitude']; $row['radius_meter'] = (int)$row['radius_meter']; } $row ? sendSuccess($row) : sendError('Data tidak ditemukan', 404); } else { $sql = "SELECT id, nama, jenis, alamat, no_wa, latitude, longitude, radius_meter, created_at FROM rumah_ibadah ORDER BY created_at DESC"; $result = $db->query($sql); $rows = []; while ($r = $result->fetch_assoc()) { $r['latitude'] = (float)$r['latitude']; $r['longitude'] = (float)$r['longitude']; $r['radius_meter'] = (int)$r['radius_meter']; $rows[] = $r; } sendSuccess($rows); } break; // ── POST: tambah data baru ──────────────────────────────────────── case 'POST': $body = getBody(); $required = ['nama', 'jenis', 'latitude', 'longitude', 'radius_meter']; foreach ($required as $field) { if (empty($body[$field]) && $body[$field] !== 0) { sendError("Field '$field' wajib diisi"); } } $stmt = $db->prepare( "INSERT INTO rumah_ibadah (nama, jenis, alamat, no_wa, latitude, longitude, radius_meter) VALUES (?, ?, ?, ?, ?, ?, ?)" ); $stmt->bind_param( 'ssssddi', $body['nama'], $body['jenis'], $body['alamat'], $body['no_wa'], $body['latitude'], $body['longitude'], $body['radius_meter'] ); executeOrFail($stmt, 'Gagal menyimpan rumah ibadah'); $newId = $db->insert_id; sendSuccess(['id' => $newId], 'Rumah Ibadah berhasil disimpan', 201); break; // ── PUT: update data ────────────────────────────────────────────── case 'PUT': if ($id <= 0) sendError('ID wajib disertakan'); $body = getBody(); $stmt = $db->prepare( "UPDATE rumah_ibadah SET nama=?, jenis=?, alamat=?, no_wa=?, latitude=?, longitude=?, radius_meter=? WHERE id=?" ); $stmt->bind_param( 'ssssddii', $body['nama'], $body['jenis'], $body['alamat'], $body['no_wa'], $body['latitude'], $body['longitude'], $body['radius_meter'], $id ); executeOrFail($stmt, 'Gagal memperbarui rumah ibadah'); sendSuccess(null, 'Rumah Ibadah berhasil diperbarui'); break; // ── DELETE: hapus data ──────────────────────────────────────────── case 'DELETE': if ($id <= 0) sendError('ID wajib disertakan'); $stmt = $db->prepare("DELETE FROM rumah_ibadah WHERE id=?"); $stmt->bind_param('i', $id); executeOrFail($stmt, 'Gagal menghapus rumah ibadah'); $stmt->affected_rows > 0 ? sendSuccess(null, 'Rumah Ibadah berhasil dihapus') : sendError('Data tidak ditemukan', 404); break; default: sendError('Method tidak diizinkan', 405); }