prepare( "SELECT id, nama_spbu, alamat, no_wa, buka_24_jam, latitude, longitude FROM data_spbu WHERE id = ?" ); $stmt->bind_param('i', $id); $stmt->execute(); $result = $stmt->get_result()->fetch_assoc(); if ($result) { $result['latitude'] = (float)$result['latitude']; $result['longitude'] = (float)$result['longitude']; echo json_encode($result); } else { http_response_code(404); echo json_encode(['error' => 'Data SPBU tidak ditemukan']); } } else { $result = $db->query( "SELECT id, nama_spbu, alamat, no_wa, buka_24_jam, latitude, longitude FROM data_spbu ORDER BY id ASC" ); if (!$result) { jsonError('Query gagal: ' . $db->error); } $rows = []; while ($row = $result->fetch_assoc()) { $row['latitude'] = (float)$row['latitude']; $row['longitude'] = (float)$row['longitude']; $rows[] = $row; } echo json_encode($rows, JSON_UNESCAPED_UNICODE); } $db->close(); exit(); } if ($method === 'POST') { $input = $jsonInput; if (empty($input['nama_spbu']) || empty($input['alamat']) || empty($input['no_wa']) || !isset($input['latitude']) || !isset($input['longitude'])) { http_response_code(400); echo json_encode(['error' => 'Data tidak lengkap. Field wajib: nama_spbu, alamat, no_wa, latitude, longitude']); exit(); } $nama_spbu = trim($input['nama_spbu']); $alamat = trim($input['alamat']); $no_wa = trim($input['no_wa']); $buka_24_jam = isset($input['buka_24_jam']) && $input['buka_24_jam'] === 'Ya' ? 'Ya' : 'Tidak'; $latitude = (float)$input['latitude']; $longitude = (float)$input['longitude']; $db = getDB(); ensureSpbuSchema($db); $stmt = $db->prepare( "INSERT INTO data_spbu (nama_spbu, alamat, no_wa, buka_24_jam, latitude, longitude) VALUES (?, ?, ?, ?, ?, ?)" ); $stmt->bind_param('ssssdd', $nama_spbu, $alamat, $no_wa, $buka_24_jam, $latitude, $longitude); if ($stmt->execute()) { http_response_code(201); echo json_encode([ 'message' => 'Data SPBU berhasil disimpan', 'id' => $db->insert_id, 'nama_spbu' => $nama_spbu, 'alamat' => $alamat, 'no_wa' => $no_wa, 'buka_24_jam' => $buka_24_jam, 'latitude' => $latitude, 'longitude' => $longitude ]); } else { http_response_code(500); echo json_encode(['error' => 'Gagal menyimpan data: ' . $stmt->error]); } $db->close(); exit(); } if ($method === 'PUT') { if (!$id) { http_response_code(400); echo json_encode(['error' => 'ID diperlukan untuk update']); exit(); } $input = $jsonInput; $db = getDB(); ensureSpbuSchema($db); if (isset($input['latitude']) && isset($input['longitude']) && !isset($input['nama_spbu'])) { $latitude = (float)$input['latitude']; $longitude = (float)$input['longitude']; $stmt = $db->prepare("UPDATE data_spbu SET latitude = ?, longitude = ? WHERE id = ?"); $stmt->bind_param('ddi', $latitude, $longitude, $id); } else { $nama_spbu = trim($input['nama_spbu'] ?? ''); $alamat = trim($input['alamat'] ?? ''); $no_wa = trim($input['no_wa'] ?? ''); $buka_24_jam = isset($input['buka_24_jam']) && $input['buka_24_jam'] === 'Ya' ? 'Ya' : 'Tidak'; $latitude = (float)($input['latitude'] ?? 0); $longitude = (float)($input['longitude'] ?? 0); if (empty($nama_spbu) || empty($alamat) || empty($no_wa)) { http_response_code(400); echo json_encode(['error' => 'nama_spbu, alamat, dan no_wa wajib diisi']); exit(); } $stmt = $db->prepare( "UPDATE data_spbu SET nama_spbu = ?, alamat = ?, no_wa = ?, buka_24_jam = ?, latitude = ?, longitude = ? WHERE id = ?" ); $stmt->bind_param('ssssddi', $nama_spbu, $alamat, $no_wa, $buka_24_jam, $latitude, $longitude, $id); } if ($stmt->execute()) { echo json_encode(['message' => 'Data SPBU berhasil diperbarui', 'id' => $id]); } else { http_response_code(500); echo json_encode(['error' => 'Gagal memperbarui data: ' . $stmt->error]); } $db->close(); exit(); } if ($method === 'DELETE') { if (!$id) { jsonError('ID diperlukan untuk hapus', 400); } $db = getDB(); ensureSpbuSchema($db); $stmt = $db->prepare("DELETE FROM data_spbu WHERE id = ?"); if (!$stmt) { jsonError('Gagal menyiapkan query hapus: ' . $db->error); } $stmt->bind_param('i', $id); if ($stmt->execute()) { if ($stmt->affected_rows > 0) { echo json_encode(['message' => 'Data SPBU berhasil dihapus', 'id' => $id], JSON_UNESCAPED_UNICODE); } else { jsonError('Data SPBU tidak ditemukan', 404); } } else { jsonError('Gagal menghapus data: ' . $stmt->error); } $stmt->close(); $db->close(); exit(); } jsonError('Method tidak diizinkan', 405); } catch (Throwable $e) { jsonError('Server error: ' . $e->getMessage()); }