Files
Webgis-Class/api/spbu.php
T
Abimanyu Ridho 5ab7251f4f initial commit
2026-06-11 11:09:32 +07:00

105 lines
3.8 KiB
PHP

<?php
// api/spbu.php
require_once __DIR__ . '/config/database.php';
require_once __DIR__ . '/helpers/response.php';
setCORSHeaders();
$db = getDB();
$method = getMethod();
requireWriteAuth($method);
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
switch ($method) {
case 'GET':
if ($id > 0) {
$stmt = $db->prepare(
"SELECT id, nama, no_wa, alamat, buka_24jam,
latitude, longitude, created_at
FROM spbu WHERE id = ?"
);
$stmt->bind_param('i', $id);
$stmt->execute();
$row = $stmt->get_result()->fetch_assoc();
if (!$row) sendError('Data tidak ditemukan', 404);
$row['latitude'] = (float)$row['latitude'];
$row['longitude'] = (float)$row['longitude'];
$row['buka_24jam']= (bool)$row['buka_24jam'];
sendSuccess($row);
} else {
$rows = [];
if (isset($_GET['buka_24jam'])) {
$val = (int)$_GET['buka_24jam'];
$stmt = $db->prepare(
"SELECT id, nama, no_wa, alamat, buka_24jam,
latitude, longitude, created_at
FROM spbu WHERE buka_24jam = ? ORDER BY nama"
);
$stmt->bind_param('i', $val);
$stmt->execute();
$res = $stmt->get_result();
} else {
$res = $db->query(
"SELECT id, nama, no_wa, alamat, buka_24jam,
latitude, longitude, created_at
FROM spbu ORDER BY nama"
);
}
while ($r = $res->fetch_assoc()) {
$r['latitude'] = (float)$r['latitude'];
$r['longitude'] = (float)$r['longitude'];
$r['buka_24jam']= (bool)$r['buka_24jam'];
$rows[] = $r;
}
sendSuccess($rows);
}
break;
case 'POST':
$body = getBody();
foreach (['nama','latitude','longitude'] as $f) {
if (empty($body[$f]) && $body[$f] !== 0) sendError("Field '$f' wajib diisi");
}
$buka = isset($body['buka_24jam']) ? (int)(bool)$body['buka_24jam'] : 0;
$stmt = $db->prepare(
"INSERT INTO spbu (nama, no_wa, alamat, buka_24jam, latitude, longitude)
VALUES (?, ?, ?, ?, ?, ?)"
);
$stmt->bind_param('sssidd',
$body['nama'], $body['no_wa'], $body['alamat'],
$buka, $body['latitude'], $body['longitude']
);
executeOrFail($stmt, 'Gagal menyimpan data SPBU');
sendSuccess(['id' => $db->insert_id], 'SPBU berhasil disimpan', 201);
break;
case 'PUT':
if ($id <= 0) sendError('ID wajib disertakan');
$body = getBody();
$buka = isset($body['buka_24jam']) ? (int)(bool)$body['buka_24jam'] : 0;
$stmt = $db->prepare(
"UPDATE spbu
SET nama=?, no_wa=?, alamat=?, buka_24jam=?, latitude=?, longitude=?
WHERE id=?"
);
$stmt->bind_param('sssiddi',
$body['nama'], $body['no_wa'], $body['alamat'],
$buka, $body['latitude'], $body['longitude'], $id
);
executeOrFail($stmt, 'Gagal memperbarui data SPBU');
sendSuccess(null, 'SPBU berhasil diperbarui');
break;
case 'DELETE':
if ($id <= 0) sendError('ID wajib disertakan');
$stmt = $db->prepare("DELETE FROM spbu WHERE id=?");
$stmt->bind_param('i', $id);
executeOrFail($stmt, 'Gagal menghapus data SPBU');
$stmt->affected_rows > 0
? sendSuccess(null, 'SPBU berhasil dihapus')
: sendError('Data tidak ditemukan', 404);
break;
default:
sendError('Method tidak diizinkan', 405);
}