105 lines
3.8 KiB
PHP
105 lines
3.8 KiB
PHP
<?php
|
|
// api/spbu.php
|
|
require_once dirname(__DIR__, 2) . '/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);
|
|
} |