Files
UAS_WEBGIS_AlifaAisyahRahma…/Web GIS Layer/api_parsil.php
T
2026-06-09 19:36:57 +07:00

119 lines
5.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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);
}