prepare("SELECT * FROM jalan WHERE id = ?"); $stmt->bind_param('i', $id); $stmt->execute(); $row = $stmt->get_result()->fetch_assoc(); if ($row) { $row['id'] = (int) $row['id']; $row['panjang_meter'] = (float) $row['panjang_meter']; $row['geojson'] = json_decode($row['geojson']); echo json_encode(['status' => 'success', 'data' => $row]); } else { http_response_code(404); echo json_encode(['status' => 'error', 'message' => 'Data tidak ditemukan']); } $stmt->close(); } else { $res = $conn->query("SELECT * FROM jalan ORDER BY created_at DESC"); $data = []; while ($row = $res->fetch_assoc()) { $row['id'] = (int) $row['id']; $row['panjang_meter'] = (float) $row['panjang_meter']; $row['geojson'] = json_decode($row['geojson']); $data[] = $row; } echo json_encode(['status' => 'success', 'data' => $data]); } $conn->close(); exit; } // ── POST (Tambah) ───────────────────────────────────────────── if ($method === 'POST') { $body = json_decode(file_get_contents('php://input'), true); $nama = trim($body['nama_jalan'] ?? ''); $status = $body['status_jalan'] ?? ''; $panjang = (float) ($body['panjang_meter'] ?? 0); $geojson = isset($body['geojson']) ? json_encode($body['geojson']) : null; $valid_status = ['Nasional', 'Provinsi', 'Kabupaten']; if (!$nama || !in_array($status, $valid_status) || !$geojson || $panjang <= 0) { http_response_code(400); echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap atau tidak valid']); exit; } $conn = getConnection(); $stmt = $conn->prepare( "INSERT INTO jalan (nama_jalan, status_jalan, panjang_meter, geojson) VALUES (?, ?, ?, ?)" ); $stmt->bind_param('ssds', $nama, $status, $panjang, $geojson); if ($stmt->execute()) { echo json_encode([ 'status' => 'success', 'message' => 'Data jalan berhasil ditambahkan', 'id' => $stmt->insert_id ]); } else { http_response_code(500); echo json_encode(['status' => 'error', 'message' => $stmt->error]); } $stmt->close(); $conn->close(); exit; } // ── PUT (Update) ────────────────────────────────────────────── if ($method === 'PUT' && $id) { $body = json_decode(file_get_contents('php://input'), true); $nama = trim($body['nama_jalan'] ?? ''); $status = $body['status_jalan'] ?? ''; $panjang = (float) ($body['panjang_meter'] ?? 0); $geojson = isset($body['geojson']) ? json_encode($body['geojson']) : null; $valid_status = ['Nasional', 'Provinsi', 'Kabupaten']; if (!$nama || !in_array($status, $valid_status) || !$geojson || $panjang <= 0) { http_response_code(400); echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap atau tidak valid']); exit; } $conn = getConnection(); $stmt = $conn->prepare( "UPDATE jalan SET nama_jalan=?, status_jalan=?, panjang_meter=?, geojson=? WHERE id=?" ); $stmt->bind_param('ssdsi', $nama, $status, $panjang, $geojson, $id); if ($stmt->execute()) { echo json_encode(['status' => 'success', 'message' => 'Data jalan berhasil diperbarui']); } else { http_response_code(500); echo json_encode(['status' => 'error', 'message' => $stmt->error]); } $stmt->close(); $conn->close(); exit; } // ── DELETE ──────────────────────────────────────────────────── if ($method === 'DELETE' && $id) { $conn = getConnection(); $stmt = $conn->prepare("DELETE FROM jalan WHERE id=?"); $stmt->bind_param('i', $id); if ($stmt->execute()) { echo json_encode(['status' => 'success', 'message' => 'Data jalan berhasil dihapus']); } else { http_response_code(500); echo json_encode(['status' => 'error', 'message' => $stmt->error]); } $stmt->close(); $conn->close(); exit; } http_response_code(405); echo json_encode(['status' => 'error', 'message' => 'Method tidak diizinkan']);