Deploy WebGIS 01-05 dengan Docker
This commit is contained in:
+145
@@ -0,0 +1,145 @@
|
||||
<?php
|
||||
// tambah.php
|
||||
// Menambah data jalan atau parsil tanah.
|
||||
// Parameter pembeda: tipe=jalan atau tipe=parsil.
|
||||
|
||||
require_once "koneksi.php";
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
|
||||
json_response([
|
||||
"success" => 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);
|
||||
?>
|
||||
Reference in New Issue
Block a user