false, 'message' => 'Metode tidak diizinkan.']); exit; } require_once __DIR__ . '/koneksi.php'; $body = file_get_contents('php://input'); $data = json_decode($body, true); if (!$data) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'Body request tidak valid.']); exit; } $required = ['nama_jalan', 'status', 'panjang', 'geom']; foreach ($required as $field) { if (!isset($data[$field])) { http_response_code(422); echo json_encode(['success' => false, 'message' => "Field '$field' wajib diisi."]); exit; } if (!is_array($data[$field]) && trim((string)$data[$field]) === '') { http_response_code(422); echo json_encode(['success' => false, 'message' => "Field '$field' tidak boleh kosong."]); exit; } } $nama_jalan = trim($data['nama_jalan']); $status = $data['status']; $panjang = (float) $data['panjang']; $geom = is_array($data['geom']) ? json_encode($data['geom']) : $data['geom']; if (!in_array($status, ['Nasional', 'Provinsi', 'Kabupaten'], true)) { http_response_code(422); echo json_encode(['success' => false, 'message' => "Status jalan tidak valid."]); exit; } $conn = getConnection(); $sql = "INSERT INTO jalan (nama_jalan, status, panjang, geom) VALUES (?, ?, ?, ?)"; $stmt = $conn->prepare($sql); if (!$stmt) { http_response_code(500); echo json_encode(['success' => false, 'message' => 'Gagal menyiapkan query: ' . $conn->error]); $conn->close(); exit; } $stmt->bind_param('ssds', $nama_jalan, $status, $panjang, $geom); if ($stmt->execute()) { $newId = $stmt->insert_id; http_response_code(201); echo json_encode([ 'success' => true, 'message' => 'Data Jalan berhasil disimpan.', 'data' => [ 'id' => $newId, 'nama_jalan' => $nama_jalan, 'status' => $status, 'panjang' => $panjang, 'geom' => json_decode($geom, true), ], ]); } else { http_response_code(500); echo json_encode(['success' => false, 'message' => 'Gagal menyimpan data: ' . $stmt->error]); } $stmt->close(); $conn->close();