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

121 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 SPBU (Point / Marker)
// 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_spbu WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$row = $stmt->get_result()->fetch_assoc();
if ($row) {
$row['geojson'] = json_decode($row['geojson']);
$row['buka_24jam'] = (bool) $row['buka_24jam'];
jsonResponse(['status' => 'success', 'data' => $row]);
} else {
jsonResponse(['status' => 'error', 'message' => 'Data tidak ditemukan'], 404);
}
} else {
$rows = $conn->query("SELECT * FROM data_spbu ORDER BY id DESC")->fetch_all(MYSQLI_ASSOC);
foreach ($rows as &$r) {
$r['geojson'] = json_decode($r['geojson']);
$r['buka_24jam'] = (bool) $r['buka_24jam'];
}
jsonResponse(['status' => 'success', 'data' => $rows]);
}
break;
// ── CREATE ───────────────────────────────────────────────
case 'POST':
$nama_spbu = clean($input['nama_spbu'] ?? '');
$telepon = clean($input['telepon'] ?? '');
$buka_24jam = isset($input['buka_24jam']) ? (int)(bool)$input['buka_24jam'] : 0;
$lat = (float) ($input['lat'] ?? 0);
$lng = (float) ($input['lng'] ?? 0);
$geojson = $input['geojson'] ?? null;
if (!$nama_spbu || !$geojson) {
jsonResponse(['status' => 'error', 'message' => 'Field nama_spbu dan geojson wajib diisi'], 400);
}
$geojsonStr = is_string($geojson) ? $geojson : json_encode($geojson);
$sql = "INSERT INTO data_spbu (nama_spbu, telepon, buka_24jam, lat, lng, geojson) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssidds', $nama_spbu, $telepon, $buka_24jam, $lat, $lng, $geojsonStr);
if ($stmt->execute()) {
jsonResponse(['status' => 'success', 'message' => 'Data SPBU 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_spbu = clean($input['nama_spbu'] ?? '');
$telepon = clean($input['telepon'] ?? '');
$buka_24jam = isset($input['buka_24jam']) ? (int)(bool)$input['buka_24jam'] : 0;
$lat = (float) ($input['lat'] ?? 0);
$lng = (float) ($input['lng'] ?? 0);
$geojson = $input['geojson'] ?? null;
if (!$id || !$nama_spbu || !$geojson) {
jsonResponse(['status' => 'error', 'message' => 'Field id, nama_spbu dan geojson wajib diisi'], 400);
}
$geojsonStr = is_string($geojson) ? $geojson : json_encode($geojson);
$sql = "UPDATE data_spbu SET nama_spbu=?, telepon=?, buka_24jam=?, lat=?, lng=?, geojson=? WHERE id=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssiddsi', $nama_spbu, $telepon, $buka_24jam, $lat, $lng, $geojsonStr, $id);
if ($stmt->execute()) {
jsonResponse(['status' => 'success', 'message' => 'Data SPBU 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_spbu WHERE id = ?");
$stmt->bind_param('i', $id);
if ($stmt->execute() && $stmt->affected_rows > 0) {
jsonResponse(['status' => 'success', 'message' => 'Data SPBU berhasil dihapus']);
} else {
jsonResponse(['status' => 'error', 'message' => 'Data tidak ditemukan atau gagal dihapus'], 404);
}
break;
default:
jsonResponse(['status' => 'error', 'message' => 'Method tidak diizinkan'], 405);
}