first commit

This commit is contained in:
2026-06-09 19:36:57 +07:00
commit 7b3bc9178d
18 changed files with 7302 additions and 0 deletions
+118
View File
@@ -0,0 +1,118 @@
<?php
// ============================================================
// API Manajemen Data Parsil Tanah (Polygon)
// Mendukung: GET (list & detail), POST (create),
// PUT (update), DELETE (hapus)
// ============================================================
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { exit(0); }
require_once 'config.php';
$method = $_SERVER['REQUEST_METHOD'];
$input = json_decode(file_get_contents('php://input'), true) ?? [];
// ── Router ───────────────────────────────────────────────────
switch ($method) {
// ── READ ─────────────────────────────────────────────────
case 'GET':
if (isset($_GET['id'])) {
$id = (int) $_GET['id'];
$stmt = $conn->prepare("SELECT * FROM data_parsil WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$row = $stmt->get_result()->fetch_assoc();
if ($row) {
$row['geojson'] = json_decode($row['geojson']);
jsonResponse(['status' => 'success', 'data' => $row]);
} else {
jsonResponse(['status' => 'error', 'message' => 'Data tidak ditemukan'], 404);
}
} else {
$rows = $conn->query("SELECT * FROM data_parsil ORDER BY id DESC")->fetch_all(MYSQLI_ASSOC);
foreach ($rows as &$r) {
$r['geojson'] = json_decode($r['geojson']);
}
jsonResponse(['status' => 'success', 'data' => $rows]);
}
break;
// ── CREATE ───────────────────────────────────────────────
case 'POST':
$nama_parsil = clean($input['nama_parsil'] ?? '');
$status_hak = clean($input['status_hak'] ?? '');
$luas_m2 = (float) ($input['luas_m2'] ?? 0);
$pemilik = clean($input['pemilik'] ?? '');
$keterangan = clean($input['keterangan'] ?? '');
$geojson = $input['geojson'] ?? null;
if (!$nama_parsil || !$status_hak || !$geojson) {
jsonResponse(['status' => 'error', 'message' => 'Field nama_parsil, status_hak, dan geojson wajib diisi'], 400);
}
$geojsonStr = is_string($geojson) ? $geojson : json_encode($geojson);
$sql = "INSERT INTO data_parsil (nama_parsil, status_hak, luas_m2, geojson, pemilik, keterangan) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssdsss', $nama_parsil, $status_hak, $luas_m2, $geojsonStr, $pemilik, $keterangan);
if ($stmt->execute()) {
jsonResponse(['status' => 'success', 'message' => 'Data parsil berhasil ditambahkan', 'id' => $conn->insert_id], 201);
} else {
jsonResponse(['status' => 'error', 'message' => $conn->error], 500);
}
break;
// ── UPDATE ───────────────────────────────────────────────
case 'PUT':
$id = (int) ($input['id'] ?? 0);
$nama_parsil = clean($input['nama_parsil'] ?? '');
$status_hak = clean($input['status_hak'] ?? '');
$luas_m2 = (float) ($input['luas_m2'] ?? 0);
$pemilik = clean($input['pemilik'] ?? '');
$keterangan = clean($input['keterangan'] ?? '');
$geojson = $input['geojson'] ?? null;
if (!$id || !$nama_parsil || !$status_hak || !$geojson) {
jsonResponse(['status' => 'error', 'message' => 'Field id, nama_parsil, status_hak, dan geojson wajib diisi'], 400);
}
$geojsonStr = is_string($geojson) ? $geojson : json_encode($geojson);
$sql = "UPDATE data_parsil SET nama_parsil=?, status_hak=?, luas_m2=?, geojson=?, pemilik=?, keterangan=? WHERE id=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssdsssi', $nama_parsil, $status_hak, $luas_m2, $geojsonStr, $pemilik, $keterangan, $id);
if ($stmt->execute()) {
jsonResponse(['status' => 'success', 'message' => 'Data parsil berhasil diperbarui']);
} else {
jsonResponse(['status' => 'error', 'message' => $conn->error], 500);
}
break;
// ── DELETE ───────────────────────────────────────────────
case 'DELETE':
$id = (int) ($_GET['id'] ?? ($input['id'] ?? 0));
if (!$id) {
jsonResponse(['status' => 'error', 'message' => 'Parameter id wajib diisi'], 400);
}
$stmt = $conn->prepare("DELETE FROM data_parsil WHERE id = ?");
$stmt->bind_param('i', $id);
if ($stmt->execute() && $stmt->affected_rows > 0) {
jsonResponse(['status' => 'success', 'message' => 'Data parsil berhasil dihapus']);
} else {
jsonResponse(['status' => 'error', 'message' => 'Data tidak ditemukan atau gagal dihapus'], 404);
}
break;
default:
jsonResponse(['status' => 'error', 'message' => 'Method tidak diizinkan'], 405);
}