prepare("SELECT id, nama_masjid, jenis, pic_masjid, alamat, radius_m, latitude, longitude FROM data_masjid WHERE id = ?"); $stmt->bind_param('i', $id); $stmt->execute(); $result = $stmt->get_result()->fetch_assoc(); if ($result) { $result['radius_m'] = (int)$result['radius_m']; $result['latitude'] = (float)$result['latitude']; $result['longitude'] = (float)$result['longitude']; echo json_encode($result); } else { http_response_code(404); echo json_encode(['error' => 'Data masjid tidak ditemukan']); } } else { $result = $db->query("SELECT id, nama_masjid, jenis, pic_masjid, alamat, radius_m, latitude, longitude FROM data_masjid ORDER BY id DESC"); $rows = []; while ($row = $result->fetch_assoc()) { $row['radius_m'] = (int)$row['radius_m']; $row['latitude'] = (float)$row['latitude']; $row['longitude'] = (float)$row['longitude']; $rows[] = $row; } echo json_encode($rows); } $db->close(); exit(); } // ---- POST: Tambah masjid baru ---- if ($method === 'POST') { $input = json_decode(file_get_contents('php://input'), true); if (empty($input['nama_masjid']) || empty($input['pic_masjid']) || empty($input['alamat']) || !isset($input['latitude']) || !isset($input['longitude'])) { http_response_code(400); echo json_encode(['error' => 'Data tidak lengkap. Field wajib: nama_masjid, jenis, pic_masjid, alamat, latitude, longitude']); exit(); } $nama_masjid = trim($input['nama_masjid']); $jenis = isset($input['jenis']) ? trim($input['jenis']) : 'Masjid'; $pic_masjid = trim($input['pic_masjid']); $alamat = trim($input['alamat']); $radius_m = isset($input['radius_m']) ? max(100, min(5000, (int)$input['radius_m'])) : 500; $latitude = (float)$input['latitude']; $longitude = (float)$input['longitude']; $valid_jenis = ['Masjid','Gereja','Pura','Vihara','Klenteng']; if (!in_array($jenis, $valid_jenis)) $jenis = 'Masjid'; $db = getDB(); $stmt = $db->prepare("INSERT INTO data_masjid (nama_masjid, jenis, pic_masjid, alamat, radius_m, latitude, longitude) VALUES (?, ?, ?, ?, ?, ?, ?)"); $stmt->bind_param('ssssidd', $nama_masjid, $jenis, $pic_masjid, $alamat, $radius_m, $latitude, $longitude); if ($stmt->execute()) { $new_id = $db->insert_id; http_response_code(201); echo json_encode([ 'message' => 'Data ibadah berhasil disimpan', 'id' => $new_id, 'nama_masjid' => $nama_masjid, 'jenis' => $jenis, 'pic_masjid' => $pic_masjid, 'alamat' => $alamat, 'radius_m' => $radius_m, 'latitude' => $latitude, 'longitude' => $longitude ]); } else { http_response_code(500); echo json_encode(['error' => 'Gagal menyimpan data: ' . $stmt->error]); } $db->close(); exit(); } // ---- PUT: Update masjid ---- if ($method === 'PUT') { if (!$id) { http_response_code(400); echo json_encode(['error' => 'ID diperlukan untuk update']); exit(); } $input = json_decode(file_get_contents('php://input'), true); $db = getDB(); // Update posisi saja (drag marker) if (isset($input['latitude']) && isset($input['longitude']) && !isset($input['nama_masjid']) && !isset($input['radius_m'])) { $latitude = (float)$input['latitude']; $longitude = (float)$input['longitude']; $stmt = $db->prepare("UPDATE data_masjid SET latitude = ?, longitude = ? WHERE id = ?"); $stmt->bind_param('ddi', $latitude, $longitude, $id); // Update radius saja (dari slider tanpa simpan form) } elseif (isset($input['radius_m']) && !isset($input['nama_masjid'])) { $radius_m = max(100, min(5000, (int)$input['radius_m'])); $stmt = $db->prepare("UPDATE data_masjid SET radius_m = ? WHERE id = ?"); $stmt->bind_param('ii', $radius_m, $id); } else { // Full update $nama_masjid = trim($input['nama_masjid'] ?? ''); $jenis = trim($input['jenis'] ?? 'Masjid'); $pic_masjid = trim($input['pic_masjid'] ?? ''); $alamat = trim($input['alamat'] ?? ''); $radius_m = isset($input['radius_m']) ? max(100, min(5000, (int)$input['radius_m'])) : 500; $latitude = (float)($input['latitude'] ?? 0); $longitude = (float)($input['longitude'] ?? 0); $valid_jenis = ['Masjid','Gereja','Pura','Vihara','Klenteng']; if (!in_array($jenis, $valid_jenis)) $jenis = 'Masjid'; if (empty($nama_masjid) || empty($pic_masjid) || empty($alamat)) { http_response_code(400); echo json_encode(['error' => 'nama_masjid, pic_masjid, dan alamat wajib diisi']); exit(); } $stmt = $db->prepare("UPDATE data_masjid SET nama_masjid = ?, jenis = ?, pic_masjid = ?, alamat = ?, radius_m = ?, latitude = ?, longitude = ? WHERE id = ?"); $stmt->bind_param('sssiddi', $nama_masjid, $jenis, $pic_masjid, $alamat, $radius_m, $latitude, $longitude, $id); } if ($stmt->execute()) { echo json_encode(['message' => 'Data masjid berhasil diperbarui', 'id' => $id]); } else { http_response_code(500); echo json_encode(['error' => 'Gagal memperbarui data: ' . $stmt->error]); } $db->close(); exit(); } // ---- DELETE: Hapus masjid ---- if ($method === 'DELETE') { if (!$id) { http_response_code(400); echo json_encode(['error' => 'ID diperlukan untuk hapus']); exit(); } $db = getDB(); $stmt = $db->prepare("DELETE FROM data_masjid WHERE id = ?"); $stmt->bind_param('i', $id); if ($stmt->execute()) { if ($stmt->affected_rows > 0) { echo json_encode(['message' => 'Data masjid berhasil dihapus', 'id' => $id]); } else { http_response_code(404); echo json_encode(['error' => 'Data tidak ditemukan']); } } else { http_response_code(500); echo json_encode(['error' => 'Gagal menghapus data: ' . $stmt->error]); } $db->close(); exit(); } // Method tidak dikenal http_response_code(405); echo json_encode(['error' => 'Method tidak diizinkan']); ?>