prepare("SELECT * FROM jalan WHERE id = ?"); $stmt->bind_param('i', $id); $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); if ($row) { $row['geometry'] = json_decode($row['geometry']); echo json_encode(['success' => true, 'data' => $row]); } else { http_response_code(404); echo json_encode(['success' => false, 'message' => 'Data tidak ditemukan']); } } else { $result = $db->query("SELECT * FROM jalan ORDER BY created_at DESC"); $data = []; while ($row = $result->fetch_assoc()) { $row['geometry'] = json_decode($row['geometry']); $data[] = $row; } echo json_encode(['success' => true, 'data' => $data]); } break; // ── CREATE: Tambah jalan baru ─────────────────────────────────── case 'POST': $input = json_decode(file_get_contents('php://input'), true); if ( empty($input['nama_jalan']) || empty($input['status_jalan']) || empty($input['geometry']) || !isset($input['panjang']) ) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'Data tidak lengkap']); break; } $nama_jalan = trim($input['nama_jalan']); $status_jalan = $input['status_jalan']; $panjang = floatval($input['panjang']); $geometry = json_encode($input['geometry']); $valid_status = ['Nasional', 'Provinsi', 'Kabupaten']; if (!in_array($status_jalan, $valid_status)) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'Status jalan tidak valid']); break; } $stmt = $db->prepare( "INSERT INTO jalan (nama_jalan, status_jalan, panjang, geometry) VALUES (?, ?, ?, ?)" ); $stmt->bind_param('ssds', $nama_jalan, $status_jalan, $panjang, $geometry); if ($stmt->execute()) { echo json_encode([ 'success' => true, 'message' => 'Data jalan berhasil disimpan', 'id' => $db->insert_id ]); } else { http_response_code(500); echo json_encode(['success' => false, 'message' => 'Gagal menyimpan data']); } break; // ── UPDATE: Edit jalan ────────────────────────────────────────── case 'PUT': $input = json_decode(file_get_contents('php://input'), true); if (empty($input['id'])) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'ID diperlukan']); break; } $id = intval($input['id']); $nama_jalan = trim($input['nama_jalan']); $status_jalan = $input['status_jalan']; $panjang = floatval($input['panjang']); $geometry = json_encode($input['geometry']); $stmt = $db->prepare( "UPDATE jalan SET nama_jalan=?, status_jalan=?, panjang=?, geometry=? WHERE id=?" ); $stmt->bind_param('ssdsi', $nama_jalan, $status_jalan, $panjang, $geometry, $id); if ($stmt->execute()) { echo json_encode(['success' => true, 'message' => 'Data jalan berhasil diupdate']); } else { http_response_code(500); echo json_encode(['success' => false, 'message' => 'Gagal mengupdate data']); } break; // ── DELETE: Hapus jalan ───────────────────────────────────────── case 'DELETE': $input = json_decode(file_get_contents('php://input'), true); $id = intval($input['id'] ?? ($_GET['id'] ?? 0)); if (!$id) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'ID diperlukan']); break; } $stmt = $db->prepare("DELETE FROM jalan WHERE id = ?"); $stmt->bind_param('i', $id); if ($stmt->execute() && $stmt->affected_rows > 0) { echo json_encode(['success' => true, 'message' => 'Data jalan berhasil dihapus']); } else { http_response_code(404); echo json_encode(['success' => false, 'message' => 'Data tidak ditemukan']); } break; default: http_response_code(405); echo json_encode(['success' => false, 'message' => 'Method tidak diizinkan']); } $db->close(); ?>