false, 'message' => 'Metode tidak diizinkan.']); exit; } require_once __DIR__ . '/koneksi.php'; // Ambil body JSON dari request $body = file_get_contents('php://input'); $data = json_decode($body, true); if (!$data) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'Body request tidak valid (bukan JSON).']); exit; } // ---- Validasi field wajib ---- $required = ['nama', 'no_spbu', 'status', 'latitude', 'longitude']; foreach ($required as $field) { if (!isset($data[$field]) || trim((string)$data[$field]) === '') { http_response_code(422); echo json_encode(['success' => false, 'message' => "Field '$field' tidak boleh kosong."]); exit; } } $nama = trim($data['nama']); $no_spbu = trim($data['no_spbu']); $status = $data['status']; $latitude = (float) $data['latitude']; $longitude = (float) $data['longitude']; // Validasi nilai enum status if (!in_array($status, ['24jam', 'tidak'], true)) { http_response_code(422); echo json_encode(['success' => false, 'message' => "Nilai status tidak valid. Gunakan '24jam' atau 'tidak'."]); exit; } // ---- Simpan ke database dengan prepared statement ---- $conn = getConnection(); $sql = "INSERT INTO spbu (nama, no_spbu, status, latitude, longitude) VALUES (?, ?, ?, ?, ?)"; $stmt = $conn->prepare($sql); if (!$stmt) { http_response_code(500); echo json_encode(['success' => false, 'message' => 'Gagal menyiapkan query: ' . $conn->error]); $conn->close(); exit; } // s = string, d = double/float $stmt->bind_param('sssdd', $nama, $no_spbu, $status, $latitude, $longitude); if ($stmt->execute()) { $newId = $stmt->insert_id; http_response_code(201); echo json_encode([ 'success' => true, 'message' => 'Data SPBU berhasil disimpan.', 'data' => [ 'id' => $newId, 'nama' => $nama, 'no_spbu' => $no_spbu, 'status' => $status, 'latitude' => $latitude, 'longitude' => $longitude, ], ]); } else { http_response_code(500); echo json_encode(['success' => false, 'message' => 'Gagal menyimpan data: ' . $stmt->error]); } $stmt->close(); $conn->close();