1st commit: Arsitektur WebGis tersentralisasi dan dokumentasi lengkap
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
header("Access-Control-Allow-Methods: POST");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
$data = json_decode(file_get_contents("php://input"));
|
||||
|
||||
if (!empty($data->id)) {
|
||||
try {
|
||||
$stmt = $conn->prepare("DELETE FROM rumah_ibadah WHERE id = :id");
|
||||
$stmt->bindValue(':id', $data->id, PDO::PARAM_INT);
|
||||
if($stmt->execute()) {
|
||||
echo json_encode(["pesan" => "Rumah Ibadah berhasil dihapus secara permanen."]);
|
||||
}
|
||||
} catch(PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Database Error: " . $e->getMessage()]);
|
||||
}
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["error" => "ID tidak ditemukan."]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
header("Access-Control-Allow-Methods: POST");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
$data = json_decode(file_get_contents("php://input"));
|
||||
|
||||
if (!empty($data->id)) {
|
||||
try {
|
||||
$stmt = $conn->prepare("DELETE FROM rumah_penduduk WHERE id = :id");
|
||||
$stmt->bindValue(':id', $data->id, PDO::PARAM_INT);
|
||||
|
||||
if($stmt->execute()) {
|
||||
echo json_encode(["pesan" => "Data keluarga berhasil dihapus secara permanen."]);
|
||||
}
|
||||
} catch(PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Database Error: " . $e->getMessage()]);
|
||||
}
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["error" => "ID tidak ditemukan."]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
header("Access-Control-Allow-Methods: POST");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
$data = json_decode(file_get_contents("php://input"));
|
||||
|
||||
if (!empty($data->nama) && isset($data->latitude) && isset($data->longitude)) {
|
||||
try {
|
||||
$query = "INSERT INTO rumah_ibadah (nama, jenis, radius_meter, alamat, latitude, longitude)
|
||||
VALUES (:nama, :jenis, :radius, :alamat, :lat, :lng)";
|
||||
|
||||
$stmt = $conn->prepare($query);
|
||||
|
||||
$stmt->bindValue(':nama', htmlspecialchars(strip_tags($data->nama)));
|
||||
$stmt->bindValue(':jenis', htmlspecialchars(strip_tags($data->jenis)));
|
||||
$stmt->bindValue(':radius', $data->radius_meter, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':alamat', htmlspecialchars(strip_tags($data->alamat)));
|
||||
$stmt->bindValue(':lat', $data->latitude);
|
||||
$stmt->bindValue(':lng', $data->longitude);
|
||||
|
||||
if($stmt->execute()) {
|
||||
echo json_encode(["pesan" => "Pusat radius ibadah berhasil diarsipkan."]);
|
||||
}
|
||||
} catch(PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Database Error: " . $e->getMessage()]);
|
||||
}
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["error" => "Data rumah ibadah tidak lengkap."]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
header("Access-Control-Allow-Methods: POST");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
$data = json_decode(file_get_contents("php://input"));
|
||||
|
||||
if (!empty($data->id_penduduk)) {
|
||||
try {
|
||||
$query = "INSERT INTO log_bantuan (id_penduduk, beras_kg, minyak_l, gula_kg, telur_kg, susu_kaleng, tunai_rp, catatan)
|
||||
VALUES (:id, :beras, :minyak, :gula, :telur, :susu, :tunai, :catatan)";
|
||||
$stmt = $conn->prepare($query);
|
||||
|
||||
$stmt->bindValue(':id', $data->id_penduduk, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':beras', $data->beras, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':minyak', $data->minyak, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':gula', $data->gula, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':telur', $data->telur, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':susu', $data->susu, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':tunai', $data->tunai, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':catatan', htmlspecialchars(strip_tags($data->catatan)));
|
||||
|
||||
if($stmt->execute()) {
|
||||
echo json_encode(["pesan" => "Catatan penyaluran bantuan berhasil disimpan."]);
|
||||
}
|
||||
} catch(PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Database Error: " . $e->getMessage()]);
|
||||
}
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["error" => "ID Keluarga Penerima tidak valid."]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
header("Access-Control-Allow-Methods: POST");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
$data = json_decode(file_get_contents("php://input"));
|
||||
|
||||
// Validasi ketat: Nama, lat, dan lng adalah harga mati
|
||||
if (!empty($data->nama) && isset($data->lat) && isset($data->lng)) {
|
||||
try {
|
||||
$query = "INSERT INTO rumah_penduduk
|
||||
(nama_kk, agama, jml_tanggungan, pengeluaran, pmt_lantai, pmt_dinding, pmt_sanitasi, pmt_penerangan, pmt_air, pmt_score, status_kemiskinan, alamat, latitude, longitude)
|
||||
VALUES
|
||||
(:nama, :agama, :tanggungan, :pengeluaran, :lantai, :dinding, :sanitasi, :penerangan, :air, :score, :status, :alamat, :lat, :lng)";
|
||||
|
||||
$stmt = $conn->prepare($query);
|
||||
|
||||
// Membersihkan input dari potensi XSS Attack
|
||||
$stmt->bindValue(':nama', htmlspecialchars(strip_tags($data->nama)));
|
||||
$stmt->bindValue(':agama', htmlspecialchars(strip_tags($data->agama)));
|
||||
$stmt->bindValue(':tanggungan', $data->tanggungan, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':pengeluaran', $data->pengeluaran, PDO::PARAM_INT);
|
||||
|
||||
// Penilaian 5 Kriteria PMT Biner
|
||||
$stmt->bindValue(':lantai', $data->pmt_lantai, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':dinding', $data->pmt_dinding, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':sanitasi', $data->pmt_sanitasi, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':penerangan', $data->pmt_penerangan, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':air', $data->pmt_air, PDO::PARAM_INT);
|
||||
|
||||
// Hasil Analisis DSS
|
||||
$stmt->bindValue(':score', $data->pmt_score, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':status', htmlspecialchars(strip_tags($data->status)));
|
||||
$stmt->bindValue(':alamat', htmlspecialchars(strip_tags($data->alamat)));
|
||||
$stmt->bindValue(':lat', $data->lat);
|
||||
$stmt->bindValue(':lng', $data->lng);
|
||||
|
||||
if($stmt->execute()) {
|
||||
echo json_encode(["pesan" => "Data kemiskinan berhasil diarsipkan."]);
|
||||
}
|
||||
} catch(PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Database Error: " . $e->getMessage()]);
|
||||
}
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["error" => "Data krusial tidak lengkap."]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
try {
|
||||
// Hanya ambil yang sedang aktif
|
||||
$stmt = $conn->query("SELECT nilai_rupiah FROM garis_kemiskinan WHERE is_active = TRUE LIMIT 1");
|
||||
$data = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if ($data) {
|
||||
echo json_encode($data);
|
||||
} else {
|
||||
// Fallback darurat jika tabel kosong
|
||||
echo json_encode(["nilai_rupiah" => 700000]);
|
||||
}
|
||||
} catch(PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Gagal mengambil data: " . $e->getMessage()]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
try {
|
||||
$stmt = $conn->query("SELECT * FROM rumah_ibadah ORDER BY created_at DESC");
|
||||
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
echo json_encode($data);
|
||||
} catch(PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Gagal mengambil data ibadah: " . $e->getMessage()]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
// Menangkap ID Penduduk dari URL (GET Request)
|
||||
$id_penduduk = isset($_GET['id']) ? intval($_GET['id']) : 0;
|
||||
|
||||
if ($id_penduduk > 0) {
|
||||
try {
|
||||
// Asumsi tabel Anda memiliki kolom created_at atau minimal id yang Auto Increment
|
||||
$stmt = $conn->prepare("SELECT * FROM log_bantuan WHERE id_penduduk = :id ORDER BY id DESC");
|
||||
$stmt->bindValue(':id', $id_penduduk, PDO::PARAM_INT);
|
||||
$stmt->execute();
|
||||
|
||||
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
echo json_encode($data);
|
||||
} catch(PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Database Error: " . $e->getMessage()]);
|
||||
}
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["error" => "Parameter ID Penduduk tidak ditemukan."]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
try {
|
||||
$stmt = $conn->query("SELECT * FROM rumah_penduduk ORDER BY created_at DESC");
|
||||
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
echo json_encode($data);
|
||||
} catch(PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Gagal mengambil data kemiskinan: " . $e->getMessage()]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
header("Access-Control-Allow-Methods: POST");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
$data = json_decode(file_get_contents("php://input"));
|
||||
|
||||
if (!empty($data->nilai) && is_numeric($data->nilai)) {
|
||||
try {
|
||||
// Mengunci eksekusi agar jika satu gagal, semua dibatalkan (ACID Compliance)
|
||||
$conn->beginTransaction();
|
||||
|
||||
// 1. Matikan semua standar historis lama
|
||||
$conn->exec("UPDATE garis_kemiskinan SET is_active = FALSE");
|
||||
|
||||
// 2. Masukkan standar baru sebagai yang aktif
|
||||
$stmtConfig = $conn->prepare("INSERT INTO garis_kemiskinan (tahun, nilai_rupiah, is_active) VALUES (:tahun, :nilai, TRUE)");
|
||||
$stmtConfig->bindValue(':tahun', date("Y"), PDO::PARAM_INT);
|
||||
$stmtConfig->bindValue(':nilai', $data->nilai, PDO::PARAM_INT);
|
||||
$stmtConfig->execute();
|
||||
|
||||
// 3. KALIBRASI ULANG MASSAL (Cascading Status Update)
|
||||
$updatePenduduk = "UPDATE rumah_penduduk SET status_kemiskinan = CASE
|
||||
WHEN pengeluaran > :nilai THEN 'Tidak Miskin'
|
||||
WHEN pmt_score >= 4 THEN 'Sangat Miskin'
|
||||
WHEN pmt_score >= 2 THEN 'Miskin'
|
||||
WHEN pmt_score = 1 THEN 'Rentan Miskin'
|
||||
ELSE 'Tidak Miskin'
|
||||
END";
|
||||
|
||||
$stmtUpdate = $conn->prepare($updatePenduduk);
|
||||
$stmtUpdate->bindValue(':nilai', $data->nilai, PDO::PARAM_INT);
|
||||
$stmtUpdate->execute();
|
||||
|
||||
$conn->commit();
|
||||
|
||||
echo json_encode(["pesan" => "Garis kemiskinan diubah dan seluruh status penduduk telah dikalibrasi ulang!"]);
|
||||
} catch(PDOException $e) {
|
||||
$conn->rollBack();
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Database Error: " . $e->getMessage()]);
|
||||
}
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["error" => "Nilai garis kemiskinan tidak valid."]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
header("Access-Control-Allow-Methods: POST");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
$data = json_decode(file_get_contents("php://input"));
|
||||
|
||||
if (!empty($data->id) && !empty($data->nama)) {
|
||||
try {
|
||||
$query = "UPDATE rumah_ibadah SET
|
||||
nama = :nama,
|
||||
jenis = :jenis,
|
||||
radius_meter = :radius
|
||||
WHERE id = :id";
|
||||
$stmt = $conn->prepare($query);
|
||||
|
||||
$stmt->bindValue(':nama', htmlspecialchars(strip_tags($data->nama)));
|
||||
$stmt->bindValue(':jenis', htmlspecialchars(strip_tags($data->jenis)));
|
||||
$stmt->bindValue(':radius', $data->radius, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':id', $data->id, PDO::PARAM_INT);
|
||||
|
||||
if($stmt->execute()) {
|
||||
echo json_encode(["pesan" => "Data Rumah Ibadah berhasil diperbarui."]);
|
||||
}
|
||||
} catch(PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Database Error: " . $e->getMessage()]);
|
||||
}
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["error" => "Data krusial tidak lengkap."]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
header("Access-Control-Allow-Methods: POST");
|
||||
require_once '../koneksi.php';
|
||||
|
||||
$data = json_decode(file_get_contents("php://input"));
|
||||
|
||||
if (!empty($data->id) && !empty($data->nama)) {
|
||||
try {
|
||||
$query = "UPDATE rumah_penduduk SET
|
||||
nama_kk = :nama,
|
||||
agama = :agama,
|
||||
jml_tanggungan = :tanggungan,
|
||||
pengeluaran = :pengeluaran,
|
||||
pmt_lantai = :lantai,
|
||||
pmt_dinding = :dinding,
|
||||
pmt_sanitasi = :sanitasi,
|
||||
pmt_penerangan = :penerangan,
|
||||
pmt_air = :air,
|
||||
pmt_score = :score,
|
||||
status_kemiskinan = :status
|
||||
WHERE id = :id";
|
||||
|
||||
$stmt = $conn->prepare($query);
|
||||
|
||||
$stmt->bindValue(':nama', htmlspecialchars(strip_tags($data->nama)));
|
||||
$stmt->bindValue(':agama', htmlspecialchars(strip_tags($data->agama)));
|
||||
$stmt->bindValue(':tanggungan', $data->tanggungan, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':pengeluaran', $data->pengeluaran, PDO::PARAM_INT);
|
||||
|
||||
$stmt->bindValue(':lantai', $data->pmt_lantai, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':dinding', $data->pmt_dinding, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':sanitasi', $data->pmt_sanitasi, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':penerangan', $data->pmt_penerangan, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':air', $data->pmt_air, PDO::PARAM_INT);
|
||||
|
||||
$stmt->bindValue(':score', $data->pmt_score, PDO::PARAM_INT);
|
||||
$stmt->bindValue(':status', htmlspecialchars(strip_tags($data->status)));
|
||||
$stmt->bindValue(':id', $data->id, PDO::PARAM_INT);
|
||||
|
||||
if($stmt->execute()) {
|
||||
echo json_encode(["pesan" => "Data kemiskinan berhasil diperbarui."]);
|
||||
}
|
||||
} catch(PDOException $e) {
|
||||
http_response_code(500);
|
||||
echo json_encode(["error" => "Database Error: " . $e->getMessage()]);
|
||||
}
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["error" => "Data krusial tidak lengkap."]);
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user