first commit
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
// ============================================================
|
||||
// api/locations.php
|
||||
// GET → ambil semua lokasi
|
||||
// POST → simpan lokasi baru
|
||||
// PATCH ?id=N → update koordinat (pindah pin)
|
||||
// DELETE ?id=N → hapus lokasi
|
||||
// ============================================================
|
||||
|
||||
require_once __DIR__ . '/config.php';
|
||||
|
||||
$method = $_SERVER['REQUEST_METHOD'];
|
||||
|
||||
// ── GET ───────────────────────────────────────────────────
|
||||
if ($method === 'GET') {
|
||||
$pdo = getDB();
|
||||
$rows = $pdo->query("SELECT * FROM locations ORDER BY created_at DESC")->fetchAll();
|
||||
foreach ($rows as &$row) {
|
||||
$row['lat'] = (float) $row['lat'];
|
||||
$row['lng'] = (float) $row['lng'];
|
||||
$row['is24h'] = (int) $row['is24h'];
|
||||
}
|
||||
echo json_encode(['success' => true, 'data' => $rows]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// ── POST: simpan baru ─────────────────────────────────────
|
||||
if ($method === 'POST') {
|
||||
$body = json_decode(file_get_contents('php://input'), true);
|
||||
$name = trim($body['name'] ?? '');
|
||||
$phone = trim($body['phone'] ?? '');
|
||||
$is24h = isset($body['is24h']) ? (int)(bool)$body['is24h'] : 0;
|
||||
$lat = isset($body['lat']) ? (float)$body['lat'] : null;
|
||||
$lng = isset($body['lng']) ? (float)$body['lng'] : null;
|
||||
|
||||
if ($name === '') { http_response_code(400); echo json_encode(['error'=>'Nama wajib diisi']); exit; }
|
||||
if ($lat === null || $lng === null) { http_response_code(400); echo json_encode(['error'=>'Koordinat wajib diisi']); exit; }
|
||||
|
||||
$pdo = getDB();
|
||||
$stmt = $pdo->prepare(
|
||||
"INSERT INTO locations (name, phone, is24h, lat, lng) VALUES (:name,:phone,:is24h,:lat,:lng)"
|
||||
);
|
||||
$stmt->execute([':name'=>$name, ':phone'=>$phone, ':is24h'=>$is24h, ':lat'=>$lat, ':lng'=>$lng]);
|
||||
|
||||
$newId = $pdo->lastInsertId();
|
||||
$newRow = $pdo->query("SELECT * FROM locations WHERE id = $newId")->fetch();
|
||||
$newRow['lat'] = (float)$newRow['lat'];
|
||||
$newRow['lng'] = (float)$newRow['lng'];
|
||||
$newRow['is24h'] = (int) $newRow['is24h'];
|
||||
|
||||
http_response_code(201);
|
||||
echo json_encode(['success' => true, 'data' => $newRow]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// ── PATCH: update koordinat setelah pin dipindah ──────────
|
||||
if ($method === 'PATCH') {
|
||||
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
|
||||
$body = json_decode(file_get_contents('php://input'), true);
|
||||
$lat = isset($body['lat']) ? (float)$body['lat'] : null;
|
||||
$lng = isset($body['lng']) ? (float)$body['lng'] : null;
|
||||
|
||||
if ($id <= 0 || $lat === null || $lng === null) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['error' => 'ID atau koordinat tidak valid']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$pdo = getDB();
|
||||
$stmt = $pdo->prepare("UPDATE locations SET lat=:lat, lng=:lng WHERE id=:id");
|
||||
$stmt->execute([':lat'=>$lat, ':lng'=>$lng, ':id'=>$id]);
|
||||
|
||||
echo json_encode(['success' => true, 'message' => 'Koordinat diperbarui']);
|
||||
exit;
|
||||
}
|
||||
|
||||
// ── DELETE ────────────────────────────────────────────────
|
||||
if ($method === 'DELETE') {
|
||||
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
|
||||
if ($id <= 0) { http_response_code(400); echo json_encode(['error'=>'ID tidak valid']); exit; }
|
||||
|
||||
$pdo = getDB();
|
||||
$stmt = $pdo->prepare("DELETE FROM locations WHERE id = :id");
|
||||
$stmt->execute([':id' => $id]);
|
||||
|
||||
if ($stmt->rowCount() === 0) { http_response_code(404); echo json_encode(['error'=>'Data tidak ditemukan']); exit; }
|
||||
|
||||
echo json_encode(['success' => true, 'message' => 'Data dihapus']);
|
||||
exit;
|
||||
}
|
||||
|
||||
http_response_code(405);
|
||||
echo json_encode(['error' => 'Method tidak diizinkan']);
|
||||
Reference in New Issue
Block a user