false, "message" => "Tambah data hanya menerima method POST." ], 405); } function valid_geojson($geojson) { if ($geojson === "") { return false; } json_decode($geojson, true); return json_last_error() === JSON_ERROR_NONE; } $tipe = $_POST["tipe"] ?? ""; if ($tipe === "jalan") { $nama_jalan = trim($_POST["nama_jalan"] ?? ""); $status_jalan = $_POST["status_jalan"] ?? ""; $panjang_meter = $_POST["panjang_meter"] ?? ""; $geojson = trim($_POST["geojson"] ?? ""); $status_valid = ["nasional", "provinsi", "kabupaten"]; if ($nama_jalan === "") { json_response(["success" => false, "message" => "Nama jalan wajib diisi."], 422); } if (!in_array($status_jalan, $status_valid, true)) { json_response(["success" => false, "message" => "Status jalan tidak valid."], 422); } if (!is_numeric($panjang_meter) || (float) $panjang_meter <= 0) { json_response(["success" => false, "message" => "Panjang jalan tidak valid."], 422); } if (!valid_geojson($geojson)) { json_response(["success" => false, "message" => "GeoJSON jalan tidak valid."], 422); } $panjang_meter = (float) $panjang_meter; $stmt = $koneksi->prepare( "INSERT INTO jalan (nama_jalan, status_jalan, panjang_meter, geojson) VALUES (?, ?, ?, ?)" ); if (!$stmt) { json_response(["success" => false, "message" => "Prepare statement gagal: " . $koneksi->error], 500); } $stmt->bind_param("ssds", $nama_jalan, $status_jalan, $panjang_meter, $geojson); if (!$stmt->execute()) { json_response(["success" => false, "message" => "Gagal menyimpan data jalan: " . $stmt->error], 500); } $id = $stmt->insert_id; $stmt->close(); json_response([ "success" => true, "message" => "Data jalan berhasil ditambahkan.", "data" => [ "id" => (int) $id, "nama_jalan" => $nama_jalan, "status_jalan" => $status_jalan, "panjang_meter" => $panjang_meter, "geojson" => $geojson ] ]); } if ($tipe === "parsil") { $nama_parsil = trim($_POST["nama_parsil"] ?? ""); $status_kepemilikan = $_POST["status_kepemilikan"] ?? ""; $luas_meter = $_POST["luas_meter"] ?? ""; $geojson = trim($_POST["geojson"] ?? ""); $status_valid = ["SHM", "HGB", "HGU", "HP"]; if ($nama_parsil === "") { json_response(["success" => false, "message" => "Nama parsil wajib diisi."], 422); } if (!in_array($status_kepemilikan, $status_valid, true)) { json_response(["success" => false, "message" => "Status kepemilikan tidak valid."], 422); } if (!is_numeric($luas_meter) || (float) $luas_meter <= 0) { json_response(["success" => false, "message" => "Luas tanah tidak valid."], 422); } if (!valid_geojson($geojson)) { json_response(["success" => false, "message" => "GeoJSON parsil tanah tidak valid."], 422); } $luas_meter = (float) $luas_meter; $stmt = $koneksi->prepare( "INSERT INTO parsil_tanah (nama_parsil, status_kepemilikan, luas_meter, geojson) VALUES (?, ?, ?, ?)" ); if (!$stmt) { json_response(["success" => false, "message" => "Prepare statement gagal: " . $koneksi->error], 500); } $stmt->bind_param("ssds", $nama_parsil, $status_kepemilikan, $luas_meter, $geojson); if (!$stmt->execute()) { json_response(["success" => false, "message" => "Gagal menyimpan data parsil tanah: " . $stmt->error], 500); } $id = $stmt->insert_id; $stmt->close(); json_response([ "success" => true, "message" => "Data parsil tanah berhasil ditambahkan.", "data" => [ "id" => (int) $id, "nama_parsil" => $nama_parsil, "status_kepemilikan" => $status_kepemilikan, "luas_meter" => $luas_meter, "geojson" => $geojson ] ]); } json_response([ "success" => false, "message" => "Tipe data tidak valid. Gunakan tipe=jalan atau tipe=parsil." ], 422); ?>