Deploy WebGIS 01-05 dengan Docker
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
-- phpMyAdmin SQL Dump
|
||||
-- version 5.2.3
|
||||
-- https://www.phpmyadmin.net/
|
||||
--
|
||||
-- Host: localhost:3306
|
||||
-- Generation Time: Jun 11, 2026 at 11:13 AM
|
||||
-- Server version: 8.4.3
|
||||
-- PHP Version: 8.3.30
|
||||
|
||||
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||
START TRANSACTION;
|
||||
SET time_zone = "+00:00";
|
||||
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
|
||||
--
|
||||
-- Database: `03_webgisdb`
|
||||
--
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `jalan`
|
||||
--
|
||||
|
||||
CREATE TABLE `jalan` (
|
||||
`id` int NOT NULL,
|
||||
`nama_jalan` varchar(150) NOT NULL,
|
||||
`status_jalan` enum('nasional','provinsi','kabupaten') NOT NULL,
|
||||
`panjang_meter` double NOT NULL,
|
||||
`geojson` longtext NOT NULL,
|
||||
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `jalan`
|
||||
--
|
||||
|
||||
INSERT INTO `jalan` (`id`, `nama_jalan`, `status_jalan`, `panjang_meter`, `geojson`, `created_at`, `updated_at`) VALUES
|
||||
(1, 'Gg. Pak Cik', 'kabupaten', 169.77, '{\"type\":\"Feature\",\"properties\":{},\"geometry\":{\"type\":\"LineString\",\"coordinates\":[[109.34135,-0.055498],[109.342616,-0.056351]]}}', '2026-06-08 12:30:39', '2026-06-08 12:30:39'),
|
||||
(2, 'Jl. Trans Kalimantan', 'nasional', 5544.23, '{\"type\":\"Feature\",\"properties\":{},\"geometry\":{\"type\":\"LineString\",\"coordinates\":[[109.374583,-0.069933],[109.375999,-0.068258],[109.379303,-0.064651],[109.380591,-0.063685],[109.381771,-0.062891],[109.383423,-0.061517],[109.385548,-0.059992],[109.386578,-0.059327],[109.387114,-0.059048],[109.387758,-0.058833],[109.38868,-0.058318],[109.389496,-0.058038],[109.390697,-0.05748],[109.391813,-0.056815],[109.393015,-0.056128],[109.394302,-0.055677],[109.39559,-0.055226],[109.396598,-0.054882],[109.397478,-0.054603],[109.398851,-0.054324],[109.401062,-0.053723],[109.401855,-0.053465],[109.402649,-0.052907],[109.403057,-0.052284],[109.403958,-0.049257],[109.405246,-0.044942],[109.406469,-0.041313],[109.406598,-0.04054],[109.406598,-0.039338],[109.406254,-0.038694],[109.406254,-0.038221],[109.406641,-0.038178],[109.406984,-0.038565]]}}', '2026-06-08 12:34:53', '2026-06-08 12:34:53');
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `parsil_tanah`
|
||||
--
|
||||
|
||||
CREATE TABLE `parsil_tanah` (
|
||||
`id` int NOT NULL,
|
||||
`nama_parsil` varchar(150) NOT NULL,
|
||||
`status_kepemilikan` enum('SHM','HGB','HGU','HP') NOT NULL,
|
||||
`luas_meter` double NOT NULL,
|
||||
`geojson` longtext NOT NULL,
|
||||
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
--
|
||||
-- Dumping data for table `parsil_tanah`
|
||||
--
|
||||
|
||||
INSERT INTO `parsil_tanah` (`id`, `nama_parsil`, `status_kepemilikan`, `luas_meter`, `geojson`, `created_at`, `updated_at`) VALUES
|
||||
(1, 'kavling A1', 'HP', 1239.31, '{\"type\":\"Feature\",\"properties\":{},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[109.339339,-0.060625],[109.339548,-0.060442],[109.339803,-0.060689],[109.339575,-0.060877],[109.339339,-0.060625]]]}}', '2026-06-08 12:30:03', '2026-06-08 12:30:03');
|
||||
|
||||
--
|
||||
-- Indexes for dumped tables
|
||||
--
|
||||
|
||||
--
|
||||
-- Indexes for table `jalan`
|
||||
--
|
||||
ALTER TABLE `jalan`
|
||||
ADD PRIMARY KEY (`id`);
|
||||
|
||||
--
|
||||
-- Indexes for table `parsil_tanah`
|
||||
--
|
||||
ALTER TABLE `parsil_tanah`
|
||||
ADD PRIMARY KEY (`id`);
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT for dumped tables
|
||||
--
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT for table `jalan`
|
||||
--
|
||||
ALTER TABLE `jalan`
|
||||
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT for table `parsil_tanah`
|
||||
--
|
||||
ALTER TABLE `parsil_tanah`
|
||||
MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
|
||||
COMMIT;
|
||||
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
// ambil_data.php
|
||||
// Mengambil semua data jalan dan parsil tanah dari database dalam format JSON.
|
||||
|
||||
require_once "koneksi.php";
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] !== "GET") {
|
||||
json_response([
|
||||
"success" => false,
|
||||
"message" => "Method tidak diizinkan."
|
||||
], 405);
|
||||
}
|
||||
|
||||
$jalan = [];
|
||||
$parsil = [];
|
||||
|
||||
// Ambil data jalan
|
||||
$queryJalan = "SELECT id, nama_jalan, status_jalan, panjang_meter, geojson, created_at, updated_at
|
||||
FROM jalan
|
||||
ORDER BY id ASC";
|
||||
$resultJalan = $koneksi->query($queryJalan);
|
||||
|
||||
if (!$resultJalan) {
|
||||
json_response([
|
||||
"success" => false,
|
||||
"message" => "Gagal mengambil data jalan: " . $koneksi->error
|
||||
], 500);
|
||||
}
|
||||
|
||||
while ($row = $resultJalan->fetch_assoc()) {
|
||||
$row["id"] = (int) $row["id"];
|
||||
$row["panjang_meter"] = (float) $row["panjang_meter"];
|
||||
$jalan[] = $row;
|
||||
}
|
||||
|
||||
// Ambil data parsil tanah
|
||||
$queryParsil = "SELECT id, nama_parsil, status_kepemilikan, luas_meter, geojson, created_at, updated_at
|
||||
FROM parsil_tanah
|
||||
ORDER BY id ASC";
|
||||
$resultParsil = $koneksi->query($queryParsil);
|
||||
|
||||
if (!$resultParsil) {
|
||||
json_response([
|
||||
"success" => false,
|
||||
"message" => "Gagal mengambil data parsil tanah: " . $koneksi->error
|
||||
], 500);
|
||||
}
|
||||
|
||||
while ($row = $resultParsil->fetch_assoc()) {
|
||||
$row["id"] = (int) $row["id"];
|
||||
$row["luas_meter"] = (float) $row["luas_meter"];
|
||||
$parsil[] = $row;
|
||||
}
|
||||
|
||||
json_response([
|
||||
"success" => true,
|
||||
"jalan" => $jalan,
|
||||
"parsil" => $parsil
|
||||
]);
|
||||
?>
|
||||
@@ -0,0 +1,26 @@
|
||||
-- Database dan tabel aplikasi WebGIS
|
||||
CREATE DATABASE IF NOT EXISTS `03_webgisdb`
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_general_ci;
|
||||
|
||||
USE `03_webgisdb`;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `jalan` (
|
||||
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
||||
`nama_jalan` VARCHAR(150) NOT NULL,
|
||||
`status_jalan` ENUM('nasional','provinsi','kabupaten') NOT NULL,
|
||||
`panjang_meter` DOUBLE NOT NULL,
|
||||
`geojson` LONGTEXT NOT NULL,
|
||||
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `parsil_tanah` (
|
||||
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
||||
`nama_parsil` VARCHAR(150) NOT NULL,
|
||||
`status_kepemilikan` ENUM('SHM','HGB','HGU','HP') NOT NULL,
|
||||
`luas_meter` DOUBLE NOT NULL,
|
||||
`geojson` LONGTEXT NOT NULL,
|
||||
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
// edit.php
|
||||
// Mengedit atribut data jalan atau parsil tanah.
|
||||
// Panjang, luas, dan geojson tidak diedit manual.
|
||||
|
||||
require_once "koneksi.php";
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
|
||||
json_response([
|
||||
"success" => false,
|
||||
"message" => "Edit data hanya menerima method POST."
|
||||
], 405);
|
||||
}
|
||||
|
||||
$tipe = $_POST["tipe"] ?? "";
|
||||
$id = $_POST["id"] ?? "";
|
||||
|
||||
if (!is_numeric($id) || (int) $id <= 0) {
|
||||
json_response([
|
||||
"success" => false,
|
||||
"message" => "ID tidak valid."
|
||||
], 422);
|
||||
}
|
||||
|
||||
$id = (int) $id;
|
||||
|
||||
if ($tipe === "jalan") {
|
||||
$nama_jalan = trim($_POST["nama_jalan"] ?? "");
|
||||
$status_jalan = $_POST["status_jalan"] ?? "";
|
||||
$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);
|
||||
}
|
||||
|
||||
$stmt = $koneksi->prepare(
|
||||
"UPDATE jalan
|
||||
SET nama_jalan = ?, status_jalan = ?
|
||||
WHERE id = ?"
|
||||
);
|
||||
|
||||
if (!$stmt) {
|
||||
json_response(["success" => false, "message" => "Prepare statement gagal: " . $koneksi->error], 500);
|
||||
}
|
||||
|
||||
$stmt->bind_param("ssi", $nama_jalan, $status_jalan, $id);
|
||||
|
||||
if (!$stmt->execute()) {
|
||||
json_response(["success" => false, "message" => "Gagal mengedit data jalan: " . $stmt->error], 500);
|
||||
}
|
||||
|
||||
if ($stmt->affected_rows === 0) {
|
||||
// Bisa saja data sama persis, jadi tetap cek apakah ID ada.
|
||||
$cek = $koneksi->prepare("SELECT id FROM jalan WHERE id = ?");
|
||||
$cek->bind_param("i", $id);
|
||||
$cek->execute();
|
||||
$hasil = $cek->get_result();
|
||||
if ($hasil->num_rows === 0) {
|
||||
json_response(["success" => false, "message" => "Data jalan tidak ditemukan."], 404);
|
||||
}
|
||||
$cek->close();
|
||||
}
|
||||
|
||||
$stmt->close();
|
||||
|
||||
json_response([
|
||||
"success" => true,
|
||||
"message" => "Data jalan berhasil diedit."
|
||||
]);
|
||||
}
|
||||
|
||||
if ($tipe === "parsil") {
|
||||
$nama_parsil = trim($_POST["nama_parsil"] ?? "");
|
||||
$status_kepemilikan = $_POST["status_kepemilikan"] ?? "";
|
||||
$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);
|
||||
}
|
||||
|
||||
$stmt = $koneksi->prepare(
|
||||
"UPDATE parsil_tanah
|
||||
SET nama_parsil = ?, status_kepemilikan = ?
|
||||
WHERE id = ?"
|
||||
);
|
||||
|
||||
if (!$stmt) {
|
||||
json_response(["success" => false, "message" => "Prepare statement gagal: " . $koneksi->error], 500);
|
||||
}
|
||||
|
||||
$stmt->bind_param("ssi", $nama_parsil, $status_kepemilikan, $id);
|
||||
|
||||
if (!$stmt->execute()) {
|
||||
json_response(["success" => false, "message" => "Gagal mengedit data parsil tanah: " . $stmt->error], 500);
|
||||
}
|
||||
|
||||
if ($stmt->affected_rows === 0) {
|
||||
// Bisa saja data sama persis, jadi tetap cek apakah ID ada.
|
||||
$cek = $koneksi->prepare("SELECT id FROM parsil_tanah WHERE id = ?");
|
||||
$cek->bind_param("i", $id);
|
||||
$cek->execute();
|
||||
$hasil = $cek->get_result();
|
||||
if ($hasil->num_rows === 0) {
|
||||
json_response(["success" => false, "message" => "Data parsil tanah tidak ditemukan."], 404);
|
||||
}
|
||||
$cek->close();
|
||||
}
|
||||
|
||||
$stmt->close();
|
||||
|
||||
json_response([
|
||||
"success" => true,
|
||||
"message" => "Data parsil tanah berhasil diedit."
|
||||
]);
|
||||
}
|
||||
|
||||
json_response([
|
||||
"success" => false,
|
||||
"message" => "Tipe data tidak valid. Gunakan tipe=jalan atau tipe=parsil."
|
||||
], 422);
|
||||
?>
|
||||
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
// hapus.php
|
||||
// Menghapus data jalan atau parsil tanah berdasarkan ID.
|
||||
|
||||
require_once "koneksi.php";
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
|
||||
json_response([
|
||||
"success" => false,
|
||||
"message" => "Hapus data hanya menerima method POST."
|
||||
], 405);
|
||||
}
|
||||
|
||||
$tipe = $_POST["tipe"] ?? "";
|
||||
$id = $_POST["id"] ?? "";
|
||||
|
||||
if (!is_numeric($id) || (int) $id <= 0) {
|
||||
json_response([
|
||||
"success" => false,
|
||||
"message" => "ID tidak valid."
|
||||
], 422);
|
||||
}
|
||||
|
||||
$id = (int) $id;
|
||||
|
||||
if ($tipe === "jalan") {
|
||||
$stmt = $koneksi->prepare("DELETE FROM jalan WHERE id = ?");
|
||||
|
||||
if (!$stmt) {
|
||||
json_response(["success" => false, "message" => "Prepare statement gagal: " . $koneksi->error], 500);
|
||||
}
|
||||
|
||||
$stmt->bind_param("i", $id);
|
||||
|
||||
if (!$stmt->execute()) {
|
||||
json_response(["success" => false, "message" => "Gagal menghapus data jalan: " . $stmt->error], 500);
|
||||
}
|
||||
|
||||
if ($stmt->affected_rows === 0) {
|
||||
json_response(["success" => false, "message" => "Data jalan tidak ditemukan."], 404);
|
||||
}
|
||||
|
||||
$stmt->close();
|
||||
|
||||
json_response([
|
||||
"success" => true,
|
||||
"message" => "Data jalan berhasil dihapus."
|
||||
]);
|
||||
}
|
||||
|
||||
if ($tipe === "parsil") {
|
||||
$stmt = $koneksi->prepare("DELETE FROM parsil_tanah WHERE id = ?");
|
||||
|
||||
if (!$stmt) {
|
||||
json_response(["success" => false, "message" => "Prepare statement gagal: " . $koneksi->error], 500);
|
||||
}
|
||||
|
||||
$stmt->bind_param("i", $id);
|
||||
|
||||
if (!$stmt->execute()) {
|
||||
json_response(["success" => false, "message" => "Gagal menghapus data parsil tanah: " . $stmt->error], 500);
|
||||
}
|
||||
|
||||
if ($stmt->affected_rows === 0) {
|
||||
json_response(["success" => false, "message" => "Data parsil tanah tidak ditemukan."], 404);
|
||||
}
|
||||
|
||||
$stmt->close();
|
||||
|
||||
json_response([
|
||||
"success" => true,
|
||||
"message" => "Data parsil tanah berhasil dihapus."
|
||||
]);
|
||||
}
|
||||
|
||||
json_response([
|
||||
"success" => false,
|
||||
"message" => "Tipe data tidak valid. Gunakan tipe=jalan atau tipe=parsil."
|
||||
], 422);
|
||||
?>
|
||||
+1177
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* Koneksi database Project 03.
|
||||
*/
|
||||
$host = getenv('DB_HOST') ?: 'db';
|
||||
$user = getenv('DB_USER') ?: 'root';
|
||||
$password = getenv('DB_PASSWORD') ?: 'webgisidolapass';
|
||||
$database = '03_webgisdb';
|
||||
|
||||
$koneksi = new mysqli($host, $user, $password, $database);
|
||||
|
||||
if ($koneksi->connect_error) {
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
http_response_code(500);
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'message' => 'Koneksi database gagal: ' . $koneksi->connect_error
|
||||
]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$koneksi->set_charset('utf8mb4');
|
||||
|
||||
function json_response($data, $status_code = 200)
|
||||
{
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
http_response_code($status_code);
|
||||
echo json_encode($data);
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
+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