Files
WebGis_Final_Project/04/api.php
T
2026-06-10 18:32:52 +07:00

136 lines
5.0 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.php REST API untuk WebGIS SPBU Pontianak
// Endpoint:
// GET api.php → ambil semua SPBU
// POST api.php → tambah SPBU baru
// PUT api.php?id=N → update SPBU
// DELETE api.php?id=N → hapus SPBU
// ============================================================
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'];
$id = isset($_GET['id']) ? (int) $_GET['id'] : null;
// ── Ambil semua SPBU ─────────────────────────────────────────
if ($method === 'GET') {
$conn = getConnection();
$res = $conn->query(
"SELECT id, nama_spbu, nomor_wa, status_24jam,
latitude, longitude, created_at
FROM spbu ORDER BY created_at DESC"
);
$data = [];
while ($row = $res->fetch_assoc()) {
$row['id'] = (int) $row['id'];
$row['latitude'] = (float) $row['latitude'];
$row['longitude'] = (float) $row['longitude'];
$data[] = $row;
}
echo json_encode(['status' => 'success', 'data' => $data]);
$conn->close();
exit;
}
// ── Tambah SPBU baru ─────────────────────────────────────────
if ($method === 'POST') {
$body = json_decode(file_get_contents('php://input'), true);
$nama = trim($body['nama_spbu'] ?? '');
$wa = trim($body['nomor_wa'] ?? '');
$status = in_array($body['status_24jam'] ?? '', ['yes','no'])
? $body['status_24jam'] : 'no';
$lat = isset($body['latitude']) ? (float) $body['latitude'] : null;
$lng = isset($body['longitude']) ? (float) $body['longitude'] : null;
if (!$nama || !$wa || $lat === null || $lng === null) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap']);
exit;
}
$conn = getConnection();
$stmt = $conn->prepare(
"INSERT INTO spbu (nama_spbu, nomor_wa, status_24jam, latitude, longitude)
VALUES (?, ?, ?, ?, ?)"
);
$stmt->bind_param('sssdd', $nama, $wa, $status, $lat, $lng);
if ($stmt->execute()) {
echo json_encode([
'status' => 'success',
'message' => 'SPBU berhasil ditambahkan',
'id' => $stmt->insert_id
]);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
// ── Update SPBU ──────────────────────────────────────────────
if ($method === 'PUT' && $id) {
$body = json_decode(file_get_contents('php://input'), true);
$nama = trim($body['nama_spbu'] ?? '');
$wa = trim($body['nomor_wa'] ?? '');
$status = in_array($body['status_24jam'] ?? '', ['yes','no'])
? $body['status_24jam'] : 'no';
$lat = isset($body['latitude']) ? (float) $body['latitude'] : null;
$lng = isset($body['longitude']) ? (float) $body['longitude'] : null;
if (!$nama || !$wa || $lat === null || $lng === null) {
http_response_code(400);
echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap']);
exit;
}
$conn = getConnection();
$stmt = $conn->prepare(
"UPDATE spbu SET nama_spbu=?, nomor_wa=?, status_24jam=?,
latitude=?, longitude=?
WHERE id=?"
);
$stmt->bind_param('sssddi', $nama, $wa, $status, $lat, $lng, $id);
if ($stmt->execute()) {
echo json_encode(['status' => 'success', 'message' => 'SPBU berhasil diupdate']);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
// ── Hapus SPBU ───────────────────────────────────────────────
if ($method === 'DELETE' && $id) {
$conn = getConnection();
$stmt = $conn->prepare("DELETE FROM spbu WHERE id=?");
$stmt->bind_param('i', $id);
if ($stmt->execute()) {
echo json_encode(['status' => 'success', 'message' => 'SPBU berhasil dihapus']);
} else {
http_response_code(500);
echo json_encode(['status' => 'error', 'message' => $stmt->error]);
}
$stmt->close();
$conn->close();
exit;
}
http_response_code(405);
echo json_encode(['status' => 'error', 'message' => 'Method tidak diizinkan']);