182 lines
8.9 KiB
PHP
182 lines
8.9 KiB
PHP
<?php
|
|
// proses.php — CRUD handler untuk Jalan, Parsil, Point
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
include 'koneksi.php';
|
|
|
|
function bersih($s) { return htmlspecialchars(strip_tags(trim($s))); }
|
|
|
|
$aksi = $_POST['aksi'] ?? $_GET['aksi'] ?? '';
|
|
|
|
// ══════════════════════════════════════════════
|
|
// READ — ambil semua data per layer
|
|
// ══════════════════════════════════════════════
|
|
if ($aksi === 'baca') {
|
|
$layer = $_GET['layer'] ?? 'jalan';
|
|
$tabel = ['jalan'=>'data_jalan','parsil'=>'data_parsil','point'=>'data_point'];
|
|
if (!isset($tabel[$layer])) { echo json_encode(['status'=>'error','message'=>'Layer tidak valid']); exit; }
|
|
|
|
$res = $conn->query("SELECT * FROM {$tabel[$layer]} ORDER BY created_at DESC");
|
|
$data = [];
|
|
while ($row = $res->fetch_assoc()) $data[] = $row;
|
|
echo json_encode(['status'=>'ok','data'=>$data]);
|
|
exit;
|
|
}
|
|
|
|
// ══════════════════════════════════════════════
|
|
// READ SINGLE
|
|
// ══════════════════════════════════════════════
|
|
if ($aksi === 'detail') {
|
|
$layer = $_GET['layer'] ?? '';
|
|
$id = intval($_GET['id'] ?? 0);
|
|
$tabel = ['jalan'=>'data_jalan','parsil'=>'data_parsil','point'=>'data_point'];
|
|
if (!isset($tabel[$layer])) { echo json_encode(['status'=>'error','message'=>'Layer tidak valid']); exit; }
|
|
|
|
$stmt = $conn->prepare("SELECT * FROM {$tabel[$layer]} WHERE id=?");
|
|
$stmt->bind_param('i', $id);
|
|
$stmt->execute();
|
|
$row = $stmt->get_result()->fetch_assoc();
|
|
echo $row ? json_encode(['status'=>'ok','data'=>$row]) : json_encode(['status'=>'error','message'=>'Tidak ditemukan']);
|
|
exit;
|
|
}
|
|
|
|
// ══════════════════════════════════════════════
|
|
// CREATE — simpan data baru
|
|
// ══════════════════════════════════════════════
|
|
if ($aksi === 'simpan') {
|
|
$layer = $_POST['layer'] ?? '';
|
|
$geojson = $_POST['geojson'] ?? '';
|
|
|
|
// Validasi GeoJSON
|
|
if (!$geojson || json_decode($geojson) === null) {
|
|
echo json_encode(['status'=>'error','message'=>'GeoJSON tidak valid']); exit;
|
|
}
|
|
|
|
if ($layer === 'jalan') {
|
|
$nama = bersih($_POST['nama'] ?? '');
|
|
$status = bersih($_POST['status'] ?? '');
|
|
$panjang = floatval($_POST['panjang'] ?? 0);
|
|
$valid = ['Jalan Nasional','Jalan Provinsi','Jalan Kabupaten'];
|
|
if (!$nama || !in_array($status, $valid)) { echo json_encode(['status'=>'error','message'=>'Data tidak lengkap']); exit; }
|
|
|
|
$stmt = $conn->prepare("INSERT INTO data_jalan (nama_jalan,status_jalan,panjang_meter,geojson) VALUES (?,?,?,?)");
|
|
$stmt->bind_param('ssds', $nama, $status, $panjang, $geojson);
|
|
|
|
} elseif ($layer === 'parsil') {
|
|
$nama = bersih($_POST['nama'] ?? '');
|
|
$status = bersih($_POST['status'] ?? '');
|
|
$luas = floatval($_POST['luas'] ?? 0);
|
|
$valid = ['SHM','HGB','HGU','HP'];
|
|
if (!$nama || !in_array($status, $valid)) { echo json_encode(['status'=>'error','message'=>'Data tidak lengkap']); exit; }
|
|
|
|
$stmt = $conn->prepare("INSERT INTO data_parsil (nama_parsil,status_sertifikat,luas_m2,geojson) VALUES (?,?,?,?)");
|
|
$stmt->bind_param('ssds', $nama, $status, $luas, $geojson);
|
|
|
|
} elseif ($layer === 'point') {
|
|
$nama = bersih($_POST['nama'] ?? '');
|
|
$wa = bersih($_POST['wa'] ?? '');
|
|
$jam = ($_POST['jam'] ?? 'Tidak') === 'Ya' ? 'Ya' : 'Tidak';
|
|
if (!$nama) { echo json_encode(['status'=>'error','message'=>'Nama wajib diisi']); exit; }
|
|
|
|
$stmt = $conn->prepare("INSERT INTO data_point (nama_objek,no_wa,buka_24jam,geojson) VALUES (?,?,?,?)");
|
|
$stmt->bind_param('ssss', $nama, $wa, $jam, $geojson);
|
|
|
|
} else {
|
|
echo json_encode(['status'=>'error','message'=>'Layer tidak dikenali']); exit;
|
|
}
|
|
|
|
if ($stmt->execute()) {
|
|
echo json_encode(['status'=>'ok','id'=>$stmt->insert_id,'message'=>'Data berhasil disimpan!']);
|
|
} else {
|
|
echo json_encode(['status'=>'error','message'=>'Gagal: '.$stmt->error]);
|
|
}
|
|
$stmt->close();
|
|
exit;
|
|
}
|
|
|
|
// ══════════════════════════════════════════════
|
|
// UPDATE — perbarui atribut & koordinat
|
|
// ══════════════════════════════════════════════
|
|
if ($aksi === 'update') {
|
|
$layer = $_POST['layer'] ?? '';
|
|
$id = intval($_POST['id'] ?? 0);
|
|
$geojson = $_POST['geojson'] ?? null;
|
|
|
|
if (!$id) { echo json_encode(['status'=>'error','message'=>'ID tidak valid']); exit; }
|
|
|
|
if ($layer === 'jalan') {
|
|
$nama = bersih($_POST['nama'] ?? '');
|
|
$status = bersih($_POST['status'] ?? '');
|
|
$panjang = floatval($_POST['panjang'] ?? 0);
|
|
$valid = ['Jalan Nasional','Jalan Provinsi','Jalan Kabupaten'];
|
|
if (!$nama || !in_array($status, $valid)) { echo json_encode(['status'=>'error','message'=>'Data tidak lengkap']); exit; }
|
|
|
|
if ($geojson && json_decode($geojson)) {
|
|
$stmt = $conn->prepare("UPDATE data_jalan SET nama_jalan=?,status_jalan=?,panjang_meter=?,geojson=? WHERE id=?");
|
|
$stmt->bind_param('ssdsi', $nama, $status, $panjang, $geojson, $id);
|
|
} else {
|
|
$stmt = $conn->prepare("UPDATE data_jalan SET nama_jalan=?,status_jalan=?,panjang_meter=? WHERE id=?");
|
|
$stmt->bind_param('ssdi', $nama, $status, $panjang, $id);
|
|
}
|
|
|
|
} elseif ($layer === 'parsil') {
|
|
$nama = bersih($_POST['nama'] ?? '');
|
|
$status = bersih($_POST['status'] ?? '');
|
|
$luas = floatval($_POST['luas'] ?? 0);
|
|
$valid = ['SHM','HGB','HGU','HP'];
|
|
if (!$nama || !in_array($status, $valid)) { echo json_encode(['status'=>'error','message'=>'Data tidak lengkap']); exit; }
|
|
|
|
if ($geojson && json_decode($geojson)) {
|
|
$stmt = $conn->prepare("UPDATE data_parsil SET nama_parsil=?,status_sertifikat=?,luas_m2=?,geojson=? WHERE id=?");
|
|
$stmt->bind_param('ssdsi', $nama, $status, $luas, $geojson, $id);
|
|
} else {
|
|
$stmt = $conn->prepare("UPDATE data_parsil SET nama_parsil=?,status_sertifikat=?,luas_m2=? WHERE id=?");
|
|
$stmt->bind_param('ssdi', $nama, $status, $luas, $id);
|
|
}
|
|
|
|
} elseif ($layer === 'point') {
|
|
$nama = bersih($_POST['nama'] ?? '');
|
|
$wa = bersih($_POST['wa'] ?? '');
|
|
$jam = ($_POST['jam'] ?? 'Tidak') === 'Ya' ? 'Ya' : 'Tidak';
|
|
if (!$nama) { echo json_encode(['status'=>'error','message'=>'Nama wajib diisi']); exit; }
|
|
|
|
if ($geojson && json_decode($geojson)) {
|
|
$stmt = $conn->prepare("UPDATE data_point SET nama_objek=?,no_wa=?,buka_24jam=?,geojson=? WHERE id=?");
|
|
$stmt->bind_param('ssssi', $nama, $wa, $jam, $geojson, $id);
|
|
} else {
|
|
$stmt = $conn->prepare("UPDATE data_point SET nama_objek=?,no_wa=?,buka_24jam=? WHERE id=?");
|
|
$stmt->bind_param('sssi', $nama, $wa, $jam, $id);
|
|
}
|
|
|
|
} else {
|
|
echo json_encode(['status'=>'error','message'=>'Layer tidak dikenali']); exit;
|
|
}
|
|
|
|
if ($stmt->execute()) {
|
|
echo json_encode(['status'=>'ok','message'=>'Data berhasil diperbarui!']);
|
|
} else {
|
|
echo json_encode(['status'=>'error','message'=>'Gagal: '.$stmt->error]);
|
|
}
|
|
$stmt->close();
|
|
exit;
|
|
}
|
|
|
|
// ══════════════════════════════════════════════
|
|
// DELETE
|
|
// ══════════════════════════════════════════════
|
|
if ($aksi === 'hapus') {
|
|
$layer = $_POST['layer'] ?? $_GET['layer'] ?? '';
|
|
$id = intval($_POST['id'] ?? $_GET['id'] ?? 0);
|
|
$tabel = ['jalan'=>'data_jalan','parsil'=>'data_parsil','point'=>'data_point'];
|
|
|
|
if (!$id || !isset($tabel[$layer])) { echo json_encode(['status'=>'error','message'=>'Parameter tidak valid']); exit; }
|
|
|
|
$stmt = $conn->prepare("DELETE FROM {$tabel[$layer]} WHERE id=?");
|
|
$stmt->bind_param('i', $id);
|
|
echo $stmt->execute()
|
|
? json_encode(['status'=>'ok','message'=>'Data berhasil dihapus!'])
|
|
: json_encode(['status'=>'error','message'=>'Gagal: '.$stmt->error]);
|
|
$stmt->close();
|
|
exit;
|
|
}
|
|
|
|
echo json_encode(['status'=>'error','message'=>"Aksi '$aksi' tidak dikenali."]); |