92 lines
2.7 KiB
PHP
92 lines
2.7 KiB
PHP
<?php
|
|
// ============================================
|
|
// create_jalan.php — INSERT data Jalan (Garis)
|
|
// ============================================
|
|
|
|
header('Content-Type: application/json');
|
|
header('Access-Control-Allow-Origin: *');
|
|
header('Access-Control-Allow-Methods: POST');
|
|
header('Access-Control-Allow-Headers: Content-Type');
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
|
|
http_response_code(200);
|
|
exit;
|
|
}
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
http_response_code(405);
|
|
echo json_encode(['success' => false, 'message' => 'Metode tidak diizinkan.']);
|
|
exit;
|
|
}
|
|
|
|
require_once __DIR__ . '/koneksi.php';
|
|
|
|
$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.']);
|
|
exit;
|
|
}
|
|
|
|
$required = ['nama_jalan', 'status', 'panjang', 'geom'];
|
|
foreach ($required as $field) {
|
|
if (!isset($data[$field])) {
|
|
http_response_code(422);
|
|
echo json_encode(['success' => false, 'message' => "Field '$field' wajib diisi."]);
|
|
exit;
|
|
}
|
|
if (!is_array($data[$field]) && trim((string)$data[$field]) === '') {
|
|
http_response_code(422);
|
|
echo json_encode(['success' => false, 'message' => "Field '$field' tidak boleh kosong."]);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
$nama_jalan = trim($data['nama_jalan']);
|
|
$status = $data['status'];
|
|
$panjang = (float) $data['panjang'];
|
|
$geom = is_array($data['geom']) ? json_encode($data['geom']) : $data['geom'];
|
|
|
|
if (!in_array($status, ['Nasional', 'Provinsi', 'Kabupaten'], true)) {
|
|
http_response_code(422);
|
|
echo json_encode(['success' => false, 'message' => "Status jalan tidak valid."]);
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
$sql = "INSERT INTO jalan (nama_jalan, status, panjang, geom) 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;
|
|
}
|
|
|
|
$stmt->bind_param('ssds', $nama_jalan, $status, $panjang, $geom);
|
|
|
|
if ($stmt->execute()) {
|
|
$newId = $stmt->insert_id;
|
|
http_response_code(201);
|
|
echo json_encode([
|
|
'success' => true,
|
|
'message' => 'Data Jalan berhasil disimpan.',
|
|
'data' => [
|
|
'id' => $newId,
|
|
'nama_jalan' => $nama_jalan,
|
|
'status' => $status,
|
|
'panjang' => $panjang,
|
|
'geom' => json_decode($geom, true),
|
|
],
|
|
]);
|
|
} else {
|
|
http_response_code(500);
|
|
echo json_encode(['success' => false, 'message' => 'Gagal menyimpan data: ' . $stmt->error]);
|
|
}
|
|
|
|
$stmt->close();
|
|
$conn->close();
|