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); }