commit be2125c3bc28bcffa6e6a02dc6559b8aaa67b605 Author: YaraAqmal Date: Sun Jun 7 13:41:52 2026 +0700 Initial commit - Fresh Clean Code diff --git a/LinkWebsite_PolylineAndPolygon_Marker.txt b/LinkWebsite_PolylineAndPolygon_Marker.txt new file mode 100644 index 0000000..a63a6c4 --- /dev/null +++ b/LinkWebsite_PolylineAndPolygon_Marker.txt @@ -0,0 +1 @@ +https://sigwebsite.free.je/PolylineAndPolygon_Marker/ \ No newline at end of file diff --git a/api.php b/api.php new file mode 100644 index 0000000..2f2ec01 --- /dev/null +++ b/api.php @@ -0,0 +1,353 @@ +query("SELECT * FROM spbu ORDER BY created_at DESC"); + $data = []; + while ($row = $result->fetch_assoc()) { + $data[] = $row; + } + sendResponse(true, 'Data SPBU berhasil diambil', $data); + } + elseif ($method === 'POST' && $action === 'create') { + $input = json_decode(file_get_contents('php://input'), true); + $stmt = $conn->prepare("INSERT INTO spbu (nama, no_spbu, tipe, latitude, longitude) VALUES (?, ?, ?, ?, ?)"); + $stmt->bind_param("sssdd", $input['nama'], $input['no_spbu'], $input['tipe'], $input['latitude'], $input['longitude']); + + if ($stmt->execute()) { + sendResponse(true, 'SPBU berhasil ditambahkan', ['id' => $conn->insert_id]); + } else { + sendResponse(false, 'Gagal menambahkan SPBU: ' . $stmt->error); + } + $stmt->close(); + } + elseif ($method === 'PUT' && $action === 'update') { + $id = intval($_GET['id']); + $input = json_decode(file_get_contents('php://input'), true); + $stmt = $conn->prepare("UPDATE spbu SET nama=?, no_spbu=?, tipe=?, latitude=?, longitude=? WHERE id=?"); + $stmt->bind_param("sssddi", $input['nama'], $input['no_spbu'], $input['tipe'], $input['latitude'], $input['longitude'], $id); + + if ($stmt->execute()) { + sendResponse(true, 'SPBU berhasil diupdate'); + } else { + sendResponse(false, 'Gagal mengupdate SPBU'); + } + $stmt->close(); + } + elseif ($method === 'DELETE' && $action === 'delete') { + $id = intval($_GET['id']); + $stmt = $conn->prepare("DELETE FROM spbu WHERE id=?"); + $stmt->bind_param("i", $id); + + if ($stmt->execute()) { + sendResponse(true, 'SPBU berhasil dihapus'); + } else { + sendResponse(false, 'Gagal menghapus SPBU'); + } + $stmt->close(); + } +} + +// ========== JALAN CRUD ========== +elseif ($type === 'jalan') { + if ($method === 'GET' && $action === 'getAll') { + $result = $conn->query("SELECT * FROM jalan ORDER BY created_at DESC"); + $data = []; + while ($row = $result->fetch_assoc()) { + $row['coordinates'] = json_decode($row['coordinates'], true); + $data[] = $row; + } + sendResponse(true, 'Data jalan berhasil diambil', $data); + } + elseif ($method === 'POST' && $action === 'create') { + $input = json_decode(file_get_contents('php://input'), true); + $coordinates = json_encode($input['coordinates']); + $stmt = $conn->prepare("INSERT INTO jalan (nama, status, panjang, coordinates) VALUES (?, ?, ?, ?)"); + $stmt->bind_param("ssis", $input['nama'], $input['status'], $input['panjang'], $coordinates); + + if ($stmt->execute()) { + sendResponse(true, 'Jalan berhasil ditambahkan', ['id' => $conn->insert_id]); + } else { + sendResponse(false, 'Gagal menambahkan jalan'); + } + $stmt->close(); + } + elseif ($method === 'PUT' && $action === 'update') { + $id = intval($_GET['id']); + $input = json_decode(file_get_contents('php://input'), true); + $stmt = $conn->prepare("UPDATE jalan SET nama=?, status=? WHERE id=?"); + $stmt->bind_param("ssi", $input['nama'], $input['status'], $id); + + if ($stmt->execute()) { + sendResponse(true, 'Jalan berhasil diupdate'); + } else { + sendResponse(false, 'Gagal mengupdate jalan'); + } + $stmt->close(); + } + elseif ($method === 'DELETE' && $action === 'delete') { + $id = intval($_GET['id']); + $stmt = $conn->prepare("DELETE FROM jalan WHERE id=?"); + $stmt->bind_param("i", $id); + + if ($stmt->execute()) { + sendResponse(true, 'Jalan berhasil dihapus'); + } else { + sendResponse(false, 'Gagal menghapus jalan'); + } + $stmt->close(); + } +} + +// ========== PARSIL CRUD ========== +elseif ($type === 'parsil') { + if ($method === 'GET' && $action === 'getAll') { + $result = $conn->query("SELECT * FROM parsil_tanah ORDER BY created_at DESC"); + $data = []; + while ($row = $result->fetch_assoc()) { + $row['coordinates'] = json_decode($row['coordinates'], true); + $data[] = $row; + } + sendResponse(true, 'Data parsil berhasil diambil', $data); + } + elseif ($method === 'POST' && $action === 'create') { + $input = json_decode(file_get_contents('php://input'), true); + $coordinates = json_encode($input['coordinates']); + $stmt = $conn->prepare("INSERT INTO parsil_tanah (nama, status, luas, coordinates) VALUES (?, ?, ?, ?)"); + $stmt->bind_param("ssis", $input['nama'], $input['status'], $input['luas'], $coordinates); + + if ($stmt->execute()) { + sendResponse(true, 'Parsil tanah berhasil ditambahkan', ['id' => $conn->insert_id]); + } else { + sendResponse(false, 'Gagal menambahkan parsil'); + } + $stmt->close(); + } + elseif ($method === 'PUT' && $action === 'update') { + $id = intval($_GET['id']); + $input = json_decode(file_get_contents('php://input'), true); + $stmt = $conn->prepare("UPDATE parsil_tanah SET nama=?, status=? WHERE id=?"); + $stmt->bind_param("ssi", $input['nama'], $input['status'], $id); + + if ($stmt->execute()) { + sendResponse(true, 'Parsil tanah berhasil diupdate'); + } else { + sendResponse(false, 'Gagal mengupdate parsil'); + } + $stmt->close(); + } + elseif ($method === 'DELETE' && $action === 'delete') { + $id = intval($_GET['id']); + $stmt = $conn->prepare("DELETE FROM parsil_tanah WHERE id=?"); + $stmt->bind_param("i", $id); + + if ($stmt->execute()) { + sendResponse(true, 'Parsil tanah berhasil dihapus'); + } else { + sendResponse(false, 'Gagal menghapus parsil'); + } + $stmt->close(); + } + +} + +// ========== JALAN RUSAK CRUD ========== +elseif ($type === 'rusak') { + + // ================= GET ALL ================= + if ($method === 'GET' && $action === 'getAll') { + $result = $conn->query("SELECT * FROM jalan_rusak ORDER BY created_at DESC"); + $data = []; + + while ($row = $result->fetch_assoc()) { + // 🔥 penting: kasih full path gambar + $row['foto'] = 'uploads/' . $row['foto']; + $data[] = $row; + } + + sendResponse(true, 'Data jalan rusak berhasil diambil', $data); + } + + // ================= CREATE (UPLOAD GAMBAR) ================= + elseif ($method === 'POST' && $action === 'create') { + + $nama = $_POST['nama']; + $latitude = $_POST['latitude']; + $longitude = $_POST['longitude']; + + // 🔥 HANDLE UPLOAD + if (!isset($_FILES['foto'])) { + sendResponse(false, 'Foto wajib diupload'); + exit; + } + + $file = $_FILES['foto']; + $ext = pathinfo($file['name'], PATHINFO_EXTENSION); + $filename = 'rusak_' . time() . '.' . $ext; + + $uploadDir = 'uploads/'; + if (!is_dir($uploadDir)) { + mkdir($uploadDir, 0777, true); + } + + $targetPath = $uploadDir . $filename; + + if (!move_uploaded_file($file['tmp_name'], $targetPath)) { + sendResponse(false, 'Gagal upload gambar'); + exit; + } + + // 🔥 SIMPAN KE DB + $stmt = $conn->prepare("INSERT INTO jalan_rusak (nama, latitude, longitude, foto) VALUES (?, ?, ?, ?)"); + $stmt->bind_param("sdds", $nama, $latitude, $longitude, $filename); + + if ($stmt->execute()) { + sendResponse(true, 'Data jalan rusak berhasil ditambahkan'); + } else { + sendResponse(false, 'Gagal menyimpan data'); + } + + $stmt->close(); + } + + // ================= DELETE ================= + elseif ($method === 'DELETE' && $action === 'delete') { + $id = intval($_GET['id']); + + // 🔥 ambil nama file dulu + $result = $conn->query("SELECT foto FROM jalan_rusak WHERE id=$id"); + $row = $result->fetch_assoc(); + + if ($row) { + $filePath = 'uploads/' . $row['foto']; + + if (file_exists($filePath)) { + unlink($filePath); // hapus file + } + } + + $stmt = $conn->prepare("DELETE FROM jalan_rusak WHERE id=?"); + $stmt->bind_param("i", $id); + + if ($stmt->execute()) { + sendResponse(true, 'Data berhasil dihapus'); + } else { + sendResponse(false, 'Gagal menghapus'); + } + + $stmt->close(); + } +} + +// ========== MASJID CRUD ========== +elseif ($type === 'masjid') { + if ($method === 'GET' && $action === 'getAll') { + $result = $conn->query("SELECT * FROM masjid ORDER BY created_at DESC"); + $data = []; + while ($row = $result->fetch_assoc()) { + $data[] = $row; + } + sendResponse(true, 'Data masjid berhasil diambil', $data); + } + elseif ($method === 'POST' && $action === 'create') { + $input = json_decode(file_get_contents('php://input'), true); + $stmt = $conn->prepare("INSERT INTO masjid (nama, alamat, latitude, longitude, radius) VALUES (?, ?, ?, ?, ?)"); + $stmt->bind_param("ssddi", $input['nama'], $input['alamat'], $input['latitude'], $input['longitude'], $input['radius']); + + if ($stmt->execute()) { + sendResponse(true, 'Masjid berhasil ditambahkan', ['id' => $conn->insert_id]); + } else { + sendResponse(false, 'Gagal menambahkan masjid: ' . $stmt->error); + } + $stmt->close(); + } + elseif ($method === 'PUT' && $action === 'update') { + $id = intval($_GET['id']); + $input = json_decode(file_get_contents('php://input'), true); + $stmt = $conn->prepare("UPDATE masjid SET nama=?, alamat=?, latitude=?, longitude=?, radius=? WHERE id=?"); + $stmt->bind_param("ssddii", $input['nama'], $input['alamat'], $input['latitude'], $input['longitude'], $input['radius'], $id); + + if ($stmt->execute()) { + sendResponse(true, 'Masjid berhasil diupdate'); + } else { + sendResponse(false, 'Gagal mengupdate masjid'); + } + $stmt->close(); + } + elseif ($method === 'DELETE' && $action === 'delete') { + $id = intval($_GET['id']); + $stmt = $conn->prepare("DELETE FROM masjid WHERE id=?"); + $stmt->bind_param("i", $id); + + if ($stmt->execute()) { + sendResponse(true, 'Masjid berhasil dihapus'); + } else { + sendResponse(false, 'Gagal menghapus masjid'); + } + $stmt->close(); + } +} + + + +// ========== ORANG BERKEBUTUHAN CRUD ========== +elseif ($type === 'orang') { + if ($method === 'GET' && $action === 'getAll') { + $result = $conn->query("SELECT o.*, m.nama as masjid_pengampu_nama + FROM orang_berkebutuhan o + LEFT JOIN masjid m ON o.masjid_pengampu_id = m.id + ORDER BY o.created_at DESC"); + $data = []; + while ($row = $result->fetch_assoc()) { + $data[] = $row; + } + sendResponse(true, 'Data orang berkebutuhan berhasil diambil', $data); + } + elseif ($method === 'POST' && $action === 'create') { + $input = json_decode(file_get_contents('php://input'), true); + + // Sederhanakan dulu, tanpa auto assign + $stmt = $conn->prepare("INSERT INTO orang_berkebutuhan (nama, no_kk, alamat, latitude, longitude, status) VALUES (?, ?, ?, ?, ?, 'merah')"); + $stmt->bind_param("ssssd", $input['nama'], $input['no_kk'], $input['alamat'], $input['latitude'], $input['longitude']); + + if ($stmt->execute()) { + sendResponse(true, 'Orang berkebutuhan berhasil ditambahkan', ['id' => $conn->insert_id]); + } else { + sendResponse(false, 'Gagal menambahkan: ' . $stmt->error); + } + $stmt->close(); + } + elseif ($method === 'PUT' && $action === 'update') { + $id = intval($_GET['id']); + $input = json_decode(file_get_contents('php://input'), true); + $stmt = $conn->prepare("UPDATE orang_berkebutuhan SET nama=?, no_kk=?, alamat=?, latitude=?, longitude=? WHERE id=?"); + $stmt->bind_param("ssssdi", $input['nama'], $input['no_kk'], $input['alamat'], $input['latitude'], $input['longitude'], $id); + + if ($stmt->execute()) { + sendResponse(true, 'Orang berkebutuhan berhasil diupdate'); + } else { + sendResponse(false, 'Gagal mengupdate'); + } + $stmt->close(); + } + elseif ($method === 'DELETE' && $action === 'delete') { + $id = intval($_GET['id']); + $stmt = $conn->prepare("DELETE FROM orang_berkebutuhan WHERE id=?"); + $stmt->bind_param("i", $id); + + if ($stmt->execute()) { + sendResponse(true, 'Data berhasil dihapus'); + } else { + sendResponse(false, 'Gagal menghapus'); + } + $stmt->close(); + } +} +?> \ No newline at end of file diff --git a/config.php b/config.php new file mode 100644 index 0000000..d9ba3e0 --- /dev/null +++ b/config.php @@ -0,0 +1,41 @@ +connect_error) { + die(json_encode([ + 'success' => false, + 'message' => 'Koneksi database gagal: ' . $conn->connect_error + ])); +} + +$conn->set_charset("utf8"); + +function sendResponse($success, $message, $data = null) { + $response = [ + 'success' => $success, + 'message' => $message + ]; + if ($data !== null) { + $response['data'] = $data; + } + echo json_encode($response); + exit; +} +?> \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..75db562 --- /dev/null +++ b/index.html @@ -0,0 +1,495 @@ + + + + + + GIS Mandiri - Manajemen Jalan & Parsil Tanah + + + + + + + + + + + + + +
+

+ + GIS Mandiri - Manajemen Jalan & Parsil Tanah +

+ +
+
+
+
+ + +
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+
+
+
+ + + + \ No newline at end of file