add file
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
include 'koneksi.php';
|
||||
|
||||
$data = [];
|
||||
|
||||
// ===== RUMAH IBADAH =====
|
||||
$q = $conn->query("SELECT *, 'ibadah' AS tipe FROM rumah_ibadah");
|
||||
while ($r = $q->fetch_assoc()) {
|
||||
$data[] = $r;
|
||||
}
|
||||
|
||||
// ===== PENDUDUK (dengan umur otomatis) =====
|
||||
$q2 = $conn->query("
|
||||
SELECT
|
||||
p.id, p.nik, p.nama, p.jenis_kelamin,
|
||||
TIMESTAMPDIFF(YEAR, p.tanggal_lahir, CURDATE()) AS umur,
|
||||
p.status_keluarga, p.status_perkawinan, p.status_hidup,
|
||||
p.alamat, p.lat, p.lng, p.no_hp,
|
||||
p.pekerjaan, p.penghasilan, p.status_ekonomi,
|
||||
p.pendidikan_terakhir, p.status_pendidikan,
|
||||
p.keluarga_id, p.rumah_ibadah_id,
|
||||
k.no_kk,
|
||||
r.nama AS nama_ibadah,
|
||||
r.jenis AS jenis_ibadah,
|
||||
(SELECT COUNT(*) FROM histori_bantuan hb WHERE hb.penduduk_id = p.id AND hb.status='selesai') AS total_bantuan,
|
||||
'penduduk' AS tipe
|
||||
FROM penduduk p
|
||||
LEFT JOIN keluarga k ON p.keluarga_id = k.id
|
||||
LEFT JOIN rumah_ibadah r ON p.rumah_ibadah_id = r.id
|
||||
WHERE p.status_hidup = 'hidup'
|
||||
");
|
||||
while ($r = $q2->fetch_assoc()) {
|
||||
$r['penghasilan'] = (float)$r['penghasilan'];
|
||||
$r['total_bantuan'] = (int)$r['total_bantuan'];
|
||||
$r['umur'] = (int)$r['umur'];
|
||||
$data[] = $r;
|
||||
}
|
||||
|
||||
// ===== LAPORAN =====
|
||||
$q3 = $conn->query("
|
||||
SELECT l.*, p.nama AS nama_penduduk, 'laporan' AS tipe
|
||||
FROM laporan l
|
||||
LEFT JOIN penduduk p ON l.penduduk_id = p.id
|
||||
WHERE l.lat IS NOT NULL AND l.lng IS NOT NULL
|
||||
");
|
||||
while ($r = $q3->fetch_assoc()) {
|
||||
$data[] = $r;
|
||||
}
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
include 'koneksi.php';
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$action = $_GET['action'] ?? $_POST['action'] ?? 'list';
|
||||
|
||||
// ===== LIST PESAN =====
|
||||
if ($action === 'list') {
|
||||
$limit = (int)($_GET['limit'] ?? 50);
|
||||
$q = $conn->query("
|
||||
SELECT c.id, c.pesan, c.dibaca, c.created_at,
|
||||
u.nama_lengkap AS dari, u.username,
|
||||
t.nama_lengkap AS ke
|
||||
FROM chat c
|
||||
JOIN user u ON c.from_user = u.id
|
||||
LEFT JOIN user t ON c.to_user = t.id
|
||||
ORDER BY c.created_at DESC
|
||||
LIMIT $limit
|
||||
");
|
||||
$rows = [];
|
||||
while ($r = $q->fetch_assoc()) $rows[] = $r;
|
||||
echo json_encode(array_reverse($rows), JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
// ===== KIRIM PESAN =====
|
||||
elseif ($action === 'kirim') {
|
||||
$from = (int)$_POST['from_user'];
|
||||
$to = ($_POST['to_user'] ?? '') ? (int)$_POST['to_user'] : null;
|
||||
$pesan = trim($_POST['pesan'] ?? '');
|
||||
|
||||
if (!$from || !$pesan) {
|
||||
echo json_encode(['status'=>'error','msg'=>'Data tidak lengkap']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$stmt = $conn->prepare("INSERT INTO chat (from_user, to_user, pesan) VALUES (?,?,?)");
|
||||
$stmt->bind_param("iis", $from, $to, $pesan);
|
||||
$stmt->execute()
|
||||
? print json_encode(['status'=>'success','id'=>$conn->insert_id])
|
||||
: print json_encode(['status'=>'error','msg'=>$stmt->error]);
|
||||
|
||||
// Log aktivitas
|
||||
$log = $conn->prepare("INSERT INTO log_aktivitas (user_id, aksi, tabel, record_id, detail) VALUES (?,?,?,?,?)");
|
||||
$aksi = 'kirim_chat'; $tbl = 'chat'; $rid = $conn->insert_id;
|
||||
$det = "Pesan: ".substr($pesan,0,80);
|
||||
$log->bind_param("issis", $from, $aksi, $tbl, $rid, $det);
|
||||
$log->execute();
|
||||
}
|
||||
|
||||
// ===== DAFTAR PENGURUS =====
|
||||
elseif ($action === 'users') {
|
||||
$q = $conn->query("SELECT id, username, nama_lengkap, role_id FROM user WHERE aktif=1 ORDER BY nama_lengkap");
|
||||
$rows = [];
|
||||
while ($r = $q->fetch_assoc()) $rows[] = $r;
|
||||
echo json_encode($rows, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
include 'koneksi.php';
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$stats = [];
|
||||
|
||||
// Total penduduk hidup
|
||||
$r = $conn->query("SELECT COUNT(*) AS total, SUM(status_ekonomi='miskin') AS miskin, SUM(status_ekonomi='rentan') AS rentan, SUM(status_ekonomi='mampu') AS mampu FROM penduduk WHERE status_hidup='hidup'");
|
||||
$stats['penduduk'] = $r->fetch_assoc();
|
||||
|
||||
// Rumah ibadah
|
||||
$r2 = $conn->query("SELECT COUNT(*) AS total FROM rumah_ibadah");
|
||||
$stats['rumah_ibadah'] = $r2->fetch_assoc();
|
||||
|
||||
// Laporan pending / darurat
|
||||
$r3 = $conn->query("SELECT COUNT(*) AS total, SUM(urgensi='darurat') AS darurat, SUM(status='pending') AS pending FROM laporan");
|
||||
$stats['laporan'] = $r3->fetch_assoc();
|
||||
|
||||
// Bantuan bulan ini
|
||||
$r4 = $conn->query("SELECT COUNT(*) AS total, SUM(status='selesai') AS selesai FROM histori_bantuan WHERE MONTH(tanggal)=MONTH(CURDATE()) AND YEAR(tanggal)=YEAR(CURDATE())");
|
||||
$stats['bantuan_bulan_ini'] = $r4->fetch_assoc();
|
||||
|
||||
// Belum pernah dibantu (miskin)
|
||||
$r5 = $conn->query("SELECT COUNT(*) AS total FROM penduduk p WHERE p.status_ekonomi='miskin' AND p.status_hidup='hidup' AND NOT EXISTS (SELECT 1 FROM histori_bantuan h WHERE h.penduduk_id=p.id AND h.status='selesai')");
|
||||
$stats['miskin_belum_dibantu'] = $r5->fetch_assoc();
|
||||
|
||||
// Sebaran per rumah ibadah
|
||||
$r6 = $conn->query("SELECT ri.nama, ri.jenis, COUNT(p.id) AS jumlah_penduduk, SUM(p.status_ekonomi='miskin') AS miskin FROM rumah_ibadah ri LEFT JOIN penduduk p ON p.rumah_ibadah_id=ri.id AND p.status_hidup='hidup' GROUP BY ri.id");
|
||||
$stats['per_rumah_ibadah'] = $r6->fetch_all(MYSQLI_ASSOC);
|
||||
|
||||
// Tren bantuan 6 bulan terakhir
|
||||
$r7 = $conn->query("SELECT DATE_FORMAT(tanggal,'%Y-%m') AS bulan, COUNT(*) AS total FROM histori_bantuan WHERE tanggal >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH) GROUP BY bulan ORDER BY bulan");
|
||||
$stats['tren_bantuan'] = $r7->fetch_all(MYSQLI_ASSOC);
|
||||
|
||||
echo json_encode($stats, JSON_UNESCAPED_UNICODE);
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
include 'koneksi.php';
|
||||
|
||||
$id = (int)$_GET['id'];
|
||||
$tipe = $_GET['tipe'] ?? '';
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
if ($tipe === 'ibadah') {
|
||||
$stmt = $conn->prepare("SELECT ri.*, u.nama_lengkap AS pengurus FROM rumah_ibadah ri LEFT JOIN user u ON ri.user_id=u.id WHERE ri.id=?");
|
||||
$stmt->bind_param("i", $id);
|
||||
$stmt->execute();
|
||||
$data = $stmt->get_result()->fetch_assoc();
|
||||
|
||||
// Jumlah penduduk terdaftar
|
||||
$s2 = $conn->prepare("SELECT COUNT(*) AS total, SUM(status_ekonomi='miskin') AS miskin, SUM(status_ekonomi='rentan') AS rentan FROM penduduk WHERE rumah_ibadah_id=? AND status_hidup='hidup'");
|
||||
$s2->bind_param("i", $id);
|
||||
$s2->execute();
|
||||
$data['statistik'] = $s2->get_result()->fetch_assoc();
|
||||
|
||||
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
||||
|
||||
} elseif ($tipe === 'penduduk') {
|
||||
$stmt = $conn->prepare("
|
||||
SELECT p.*,
|
||||
TIMESTAMPDIFF(YEAR, p.tanggal_lahir, CURDATE()) AS umur,
|
||||
k.no_kk, r.nama AS nama_ibadah
|
||||
FROM penduduk p
|
||||
LEFT JOIN keluarga k ON p.keluarga_id = k.id
|
||||
LEFT JOIN rumah_ibadah r ON p.rumah_ibadah_id = r.id
|
||||
WHERE p.id=?
|
||||
");
|
||||
$stmt->bind_param("i", $id);
|
||||
$stmt->execute();
|
||||
$data = $stmt->get_result()->fetch_assoc();
|
||||
|
||||
// Anggota keluarga (sesama KK)
|
||||
if ($data['keluarga_id']) {
|
||||
$s2 = $conn->prepare("SELECT id, nama, jenis_kelamin, TIMESTAMPDIFF(YEAR, tanggal_lahir, CURDATE()) AS umur, status_keluarga FROM penduduk WHERE keluarga_id=? AND id!=? AND status_hidup='hidup'");
|
||||
$s2->bind_param("ii", $data['keluarga_id'], $id);
|
||||
$s2->execute();
|
||||
$data['anggota_keluarga'] = $s2->get_result()->fetch_all(MYSQLI_ASSOC);
|
||||
} else {
|
||||
$data['anggota_keluarga'] = [];
|
||||
}
|
||||
|
||||
// Histori bantuan
|
||||
$s3 = $conn->prepare("
|
||||
SELECT hb.*, jb.nama AS nama_bantuan, jb.kategori
|
||||
FROM histori_bantuan hb
|
||||
JOIN jenis_bantuan jb ON hb.jenis_bantuan_id = jb.id
|
||||
WHERE hb.penduduk_id=?
|
||||
ORDER BY hb.tanggal DESC
|
||||
");
|
||||
$s3->bind_param("i", $id);
|
||||
$s3->execute();
|
||||
$data['histori_bantuan'] = $s3->get_result()->fetch_all(MYSQLI_ASSOC);
|
||||
|
||||
// Pelatihan
|
||||
$s4 = $conn->prepare("SELECT * FROM pelatihan WHERE penduduk_id=?");
|
||||
$s4->bind_param("i", $id);
|
||||
$s4->execute();
|
||||
$data['pelatihan'] = $s4->get_result()->fetch_all(MYSQLI_ASSOC);
|
||||
|
||||
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
||||
|
||||
} elseif ($tipe === 'laporan') {
|
||||
$stmt = $conn->prepare("SELECT l.*, p.nama AS nama_penduduk FROM laporan l LEFT JOIN penduduk p ON l.penduduk_id=p.id WHERE l.id=?");
|
||||
$stmt->bind_param("i", $id);
|
||||
$stmt->execute();
|
||||
echo json_encode($stmt->get_result()->fetch_assoc(), JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
include 'koneksi.php';
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$id = (int)$_POST['id'];
|
||||
$tipe = $_POST['tipe'] ?? '';
|
||||
|
||||
if ($tipe === 'ibadah') {
|
||||
$stmt = $conn->prepare("UPDATE rumah_ibadah SET nama=?,jenis=?,kontak=?,alamat=?,radius=? WHERE id=?");
|
||||
$stmt->bind_param("ssssdi",
|
||||
$_POST['nama'], $_POST['jenis'], $_POST['kontak'],
|
||||
$_POST['alamat'], (float)$_POST['radius'], $id
|
||||
);
|
||||
$stmt->execute()
|
||||
? print json_encode(["status" => "success"])
|
||||
: print json_encode(["status" => "error", "msg" => $stmt->error]);
|
||||
|
||||
} elseif ($tipe === 'penduduk') {
|
||||
$stmt = $conn->prepare("UPDATE penduduk SET nama=?,jenis_kelamin=?,tanggal_lahir=?,status_keluarga=?,status_perkawinan=?,status_hidup=?,alamat=?,no_hp=?,pekerjaan=?,penghasilan=?,status_ekonomi=?,pendidikan_terakhir=?,status_pendidikan=? WHERE id=?");
|
||||
$stmt->bind_param("sssssssssdsssi",
|
||||
$_POST['nama'],
|
||||
$_POST['jenis_kelamin'],
|
||||
$_POST['tanggal_lahir'],
|
||||
$_POST['status_keluarga'],
|
||||
$_POST['status_perkawinan'],
|
||||
$_POST['status_hidup'],
|
||||
$_POST['alamat'],
|
||||
$_POST['no_hp'],
|
||||
$_POST['pekerjaan'],
|
||||
(float)$_POST['penghasilan'],
|
||||
$_POST['status_ekonomi'],
|
||||
$_POST['pendidikan_terakhir'],
|
||||
$_POST['status_pendidikan'],
|
||||
$id
|
||||
);
|
||||
$stmt->execute()
|
||||
? print json_encode(["status" => "success"])
|
||||
: print json_encode(["status" => "error", "msg" => $stmt->error]);
|
||||
|
||||
} elseif ($tipe === 'laporan') {
|
||||
$stmt = $conn->prepare("UPDATE laporan SET status=?,ditangani_oleh=? WHERE id=?");
|
||||
$handler = ($_POST['ditangani_oleh'] ?? '') ? (int)$_POST['ditangani_oleh'] : null;
|
||||
$stmt->bind_param("sii", $_POST['status'], $handler, $id);
|
||||
$stmt->execute()
|
||||
? print json_encode(["status" => "success"])
|
||||
: print json_encode(["status" => "error", "msg" => $stmt->error]);
|
||||
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["status" => "error", "msg" => "Tipe tidak dikenal"]);
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
include 'koneksi.php';
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$id = (int)$_POST['id'];
|
||||
$tipe = $_POST['tipe'] ?? '';
|
||||
|
||||
if ($tipe === 'ibadah') {
|
||||
$stmt = $conn->prepare("DELETE FROM rumah_ibadah WHERE id=?");
|
||||
$stmt->bind_param("i", $id);
|
||||
$stmt->execute()
|
||||
? print json_encode(["status" => "success"])
|
||||
: print json_encode(["status" => "error", "msg" => $stmt->error]);
|
||||
|
||||
} elseif ($tipe === 'penduduk') {
|
||||
// Hapus histori & pelatihan dulu (FK)
|
||||
foreach (['histori_bantuan', 'pelatihan'] as $tbl) {
|
||||
$s = $conn->prepare("DELETE FROM $tbl WHERE penduduk_id=?");
|
||||
$s->bind_param("i", $id);
|
||||
$s->execute();
|
||||
}
|
||||
$stmt = $conn->prepare("DELETE FROM penduduk WHERE id=?");
|
||||
$stmt->bind_param("i", $id);
|
||||
$stmt->execute()
|
||||
? print json_encode(["status" => "success"])
|
||||
: print json_encode(["status" => "error", "msg" => $stmt->error]);
|
||||
|
||||
} elseif ($tipe === 'laporan') {
|
||||
$stmt = $conn->prepare("DELETE FROM laporan WHERE id=?");
|
||||
$stmt->bind_param("i", $id);
|
||||
$stmt->execute()
|
||||
? print json_encode(["status" => "success"])
|
||||
: print json_encode(["status" => "error", "msg" => $stmt->error]);
|
||||
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["status" => "error", "msg" => "Tipe tidak dikenal"]);
|
||||
}
|
||||
+2286
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
$host = getenv('DB_HOST') ?: 'localhost';
|
||||
$user = getenv('DB_USER') ?: 'root';
|
||||
$pass = getenv('DB_PASSWORD');
|
||||
$pass = ($pass === false) ? '' : $pass;
|
||||
$db = getenv('DB_NAME') ?: 'webgis_uas';
|
||||
|
||||
$conn = new mysqli($host, $user, $pass, $db);
|
||||
|
||||
if ($conn->connect_error) {
|
||||
http_response_code(500);
|
||||
die(json_encode(["error" => "Koneksi database gagal: " . $conn->connect_error]));
|
||||
}
|
||||
|
||||
$conn->set_charset("utf8mb4");
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
include 'koneksi.php';
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$action = $_GET['action'] ?? 'list';
|
||||
|
||||
// ===== LIST LOG =====
|
||||
if ($action === 'list') {
|
||||
$limit = (int)($_GET['limit'] ?? 100);
|
||||
$q = $conn->query("
|
||||
SELECT l.*, u.nama_lengkap AS nama_user, u.username
|
||||
FROM log_aktivitas l
|
||||
LEFT JOIN user u ON l.user_id = u.id
|
||||
ORDER BY l.created_at DESC
|
||||
LIMIT $limit
|
||||
");
|
||||
$rows = [];
|
||||
while ($r = $q->fetch_assoc()) $rows[] = $r;
|
||||
echo json_encode($rows, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
// ===== TAMBAH LOG =====
|
||||
elseif ($action === 'tambah') {
|
||||
$uid = (int)$_POST['user_id'];
|
||||
$aksi = $_POST['aksi'] ?? '';
|
||||
$tabel = $_POST['tabel'] ?? '';
|
||||
$rid = (int)($_POST['record_id'] ?? 0);
|
||||
$detail = $_POST['detail'] ?? '';
|
||||
$ip = $_SERVER['REMOTE_ADDR'] ?? '';
|
||||
|
||||
$stmt = $conn->prepare("INSERT INTO log_aktivitas (user_id,aksi,tabel,record_id,detail,ip) VALUES (?,?,?,?,?,?)");
|
||||
$stmt->bind_param("ississs", $uid, $aksi, $tabel, $rid, $detail, $ip);
|
||||
$stmt->execute()
|
||||
? print json_encode(['status'=>'success'])
|
||||
: print json_encode(['status'=>'error','msg'=>$stmt->error]);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
include 'koneksi.php';
|
||||
header('Content-Type: application/json');
|
||||
|
||||
// ===== AUTO-CREATE TABEL JIKA BELUM ADA =====
|
||||
$conn->query("
|
||||
CREATE TABLE IF NOT EXISTS riwayat_pendidikan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
penduduk_id INT NOT NULL,
|
||||
jenis ENUM('formal','pelatihan') DEFAULT 'formal',
|
||||
institusi VARCHAR(150),
|
||||
jenjang VARCHAR(100),
|
||||
jurusan VARCHAR(100),
|
||||
thn_masuk INT,
|
||||
thn_lulus INT,
|
||||
status ENUM('lulus','sedang_belajar','putus') DEFAULT 'lulus',
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (penduduk_id) REFERENCES penduduk(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
||||
");
|
||||
|
||||
$action = $_GET['action'] ?? $_POST['action'] ?? 'list';
|
||||
|
||||
// ===== LIST =====
|
||||
if ($action === 'list') {
|
||||
$result = $conn->query("
|
||||
SELECT rp.*,
|
||||
p.nama AS penduduk_nama,
|
||||
p.nik
|
||||
FROM riwayat_pendidikan rp
|
||||
JOIN penduduk p ON rp.penduduk_id = p.id
|
||||
ORDER BY rp.created_at DESC
|
||||
");
|
||||
|
||||
$rows = [];
|
||||
if ($result) {
|
||||
while ($r = $result->fetch_assoc()) $rows[] = $r;
|
||||
}
|
||||
echo json_encode($rows, JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
// ===== SIMPAN =====
|
||||
elseif ($action === 'simpan') {
|
||||
$pid = (int)($_POST['penduduk_id'] ?? 0);
|
||||
$jenis = $_POST['jenis'] ?? 'formal';
|
||||
$inst = $_POST['institusi'] ?? '';
|
||||
$jenjang = $_POST['jenjang'] ?? '';
|
||||
$jurusan = $_POST['jurusan'] ?? '';
|
||||
$thn_msk = !empty($_POST['thn_masuk']) ? (int)$_POST['thn_masuk'] : null;
|
||||
$thn_lls = !empty($_POST['thn_lulus']) ? (int)$_POST['thn_lulus'] : null;
|
||||
$status = $_POST['status'] ?? 'lulus';
|
||||
|
||||
if (!$pid) {
|
||||
echo json_encode(["status" => "error", "msg" => "penduduk_id tidak valid"]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$stmt = $conn->prepare("
|
||||
INSERT INTO riwayat_pendidikan
|
||||
(penduduk_id, jenis, institusi, jenjang, jurusan, thn_masuk, thn_lulus, status)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||
");
|
||||
$stmt->bind_param("issssiis",
|
||||
$pid, $jenis, $inst, $jenjang, $jurusan, $thn_msk, $thn_lls, $status
|
||||
);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
$new_id = $conn->insert_id;
|
||||
|
||||
// Log aktivitas
|
||||
$uid = (int)($_POST['user_id'] ?? 0);
|
||||
if ($uid) {
|
||||
$aksi = 'tambah_pendidikan';
|
||||
$tbl = 'riwayat_pendidikan';
|
||||
$det = "Tambah $jenis: $jenjang (penduduk ID $pid)";
|
||||
$ip = $_SERVER['REMOTE_ADDR'] ?? '';
|
||||
$log = $conn->prepare("INSERT INTO log_aktivitas (user_id,aksi,tabel,record_id,detail,ip) VALUES (?,?,?,?,?,?)");
|
||||
$log->bind_param("issiiss", $uid, $aksi, $tbl, $new_id, $det, $ip);
|
||||
$log->execute();
|
||||
}
|
||||
|
||||
echo json_encode(["status" => "success", "id" => $new_id]);
|
||||
} else {
|
||||
echo json_encode(["status" => "error", "msg" => $stmt->error]);
|
||||
}
|
||||
$stmt->close();
|
||||
}
|
||||
|
||||
// ===== HAPUS =====
|
||||
elseif ($action === 'hapus') {
|
||||
$id = (int)($_POST['id'] ?? 0);
|
||||
$stmt = $conn->prepare("DELETE FROM riwayat_pendidikan WHERE id=?");
|
||||
$stmt->bind_param("i", $id);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status" => "success"]);
|
||||
} else {
|
||||
echo json_encode(["status" => "error", "msg" => $stmt->error]);
|
||||
}
|
||||
$stmt->close();
|
||||
}
|
||||
|
||||
else {
|
||||
echo json_encode(["status" => "error", "msg" => "Action tidak dikenal"]);
|
||||
}
|
||||
+168
@@ -0,0 +1,168 @@
|
||||
<?php
|
||||
include 'koneksi.php';
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$tipe = $_POST['tipe'] ?? '';
|
||||
|
||||
// ===== RUMAH IBADAH =====
|
||||
if ($tipe === 'ibadah') {
|
||||
$nama = trim($_POST['nama'] ?? '');
|
||||
$jenis = $_POST['jenis'] ?? 'lainnya';
|
||||
$kontak = $_POST['kontak'] ?? '';
|
||||
$alamat = $_POST['alamat'] ?? '';
|
||||
$lat = (float)($_POST['lat'] ?? 0);
|
||||
$lng = (float)($_POST['lng'] ?? 0);
|
||||
$radius = (float)($_POST['radius'] ?? 500);
|
||||
|
||||
if (!$nama) { echo json_encode(["status"=>"error","msg"=>"Nama tidak boleh kosong"]); exit; }
|
||||
|
||||
$stmt = $conn->prepare("INSERT INTO rumah_ibadah (nama,jenis,kontak,alamat,lat,lng,radius) VALUES (?,?,?,?,?,?,?)");
|
||||
$stmt->bind_param("ssssddd", $nama,$jenis,$kontak,$alamat,$lat,$lng,$radius);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status"=>"success","id"=>(int)$conn->insert_id]);
|
||||
} else {
|
||||
echo json_encode(["status"=>"error","msg"=>$stmt->error]);
|
||||
}
|
||||
$stmt->close();
|
||||
}
|
||||
|
||||
// ===== PENDUDUK =====
|
||||
elseif ($tipe === 'penduduk') {
|
||||
$nik = trim($_POST['nik'] ?? '');
|
||||
$nama = trim($_POST['nama'] ?? '');
|
||||
$jk = $_POST['jenis_kelamin'] ?? 'L';
|
||||
$tgl_lahir = !empty($_POST['tanggal_lahir']) ? $_POST['tanggal_lahir'] : null;
|
||||
$status_kel = $_POST['status_keluarga'] ?? 'lainnya';
|
||||
$status_kawin = $_POST['status_perkawinan'] ?? 'belum_kawin';
|
||||
$alamat = $_POST['alamat'] ?? '';
|
||||
$no_hp = $_POST['no_hp'] ?? '';
|
||||
$pekerjaan = $_POST['pekerjaan'] ?? '';
|
||||
$penghasilan = (float)($_POST['penghasilan'] ?? 0);
|
||||
$status_ekonomi = $_POST['status_ekonomi'] ?? 'rentan';
|
||||
$pend_terakhir = $_POST['pendidikan_terakhir'] ?? 'tidak_sekolah';
|
||||
$status_pend = $_POST['status_pendidikan'] ?? 'tidak_sekolah';
|
||||
$lat = (float)($_POST['lat'] ?? 0);
|
||||
$lng = (float)($_POST['lng'] ?? 0);
|
||||
|
||||
if (!$nik || !$nama) {
|
||||
echo json_encode(["status"=>"error","msg"=>"NIK dan Nama wajib diisi"]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Cari rumah ibadah terdekat otomatis
|
||||
$rumah_ibadah_id = null;
|
||||
if ($lat && $lng) {
|
||||
$s = $conn->prepare("SELECT id FROM rumah_ibadah ORDER BY (6371*acos(cos(radians(?))*cos(radians(lat))*cos(radians(lng)-radians(?))+sin(radians(?))*sin(radians(lat)))) ASC LIMIT 1");
|
||||
$s->bind_param("ddd", $lat, $lng, $lat);
|
||||
$s->execute();
|
||||
$row = $s->get_result()->fetch_assoc();
|
||||
$rumah_ibadah_id = $row ? (int)$row['id'] : null;
|
||||
$s->close();
|
||||
}
|
||||
|
||||
// INSERT — semua 16 kolom, tipe dijaga ketat
|
||||
// Gunakan query langsung dengan escape untuk menghindari masalah nullable
|
||||
$nik_e = $conn->real_escape_string($nik);
|
||||
$nama_e = $conn->real_escape_string($nama);
|
||||
$jk_e = $conn->real_escape_string($jk);
|
||||
$tgl_e = $tgl_lahir ? "'".$conn->real_escape_string($tgl_lahir)."'" : 'NULL';
|
||||
$stkel_e = $conn->real_escape_string($status_kel);
|
||||
$stkaw_e = $conn->real_escape_string($status_kawin);
|
||||
$almt_e = $conn->real_escape_string($alamat);
|
||||
$hp_e = $conn->real_escape_string($no_hp);
|
||||
$pkrj_e = $conn->real_escape_string($pekerjaan);
|
||||
$ekn_e = $conn->real_escape_string($status_ekonomi);
|
||||
$pend_e = $conn->real_escape_string($pend_terakhir);
|
||||
$spnd_e = $conn->real_escape_string($status_pend);
|
||||
$rid_e = $rumah_ibadah_id ? (int)$rumah_ibadah_id : 'NULL';
|
||||
|
||||
$sql = "INSERT INTO penduduk
|
||||
(nik,nama,jenis_kelamin,tanggal_lahir,status_keluarga,status_perkawinan,
|
||||
alamat,no_hp,pekerjaan,penghasilan,status_ekonomi,
|
||||
pendidikan_terakhir,status_pendidikan,lat,lng,rumah_ibadah_id)
|
||||
VALUES
|
||||
('{$nik_e}','{$nama_e}','{$jk_e}',{$tgl_e},'{$stkel_e}','{$stkaw_e}',
|
||||
'{$almt_e}','{$hp_e}','{$pkrj_e}',{$penghasilan},'{$ekn_e}',
|
||||
'{$pend_e}','{$spnd_e}',{$lat},{$lng},{$rid_e})";
|
||||
|
||||
$stmt = $conn; // dummy untuk cek execute
|
||||
|
||||
if ($conn->query($sql)) {
|
||||
$new_id = (int)$conn->insert_id;
|
||||
// Log
|
||||
$uid = (int)($_POST['user_id'] ?? 0);
|
||||
if ($uid) {
|
||||
$l = $conn->prepare("INSERT INTO log_aktivitas (user_id,aksi,tabel,record_id,detail,ip) VALUES (?,?,?,?,?,?)");
|
||||
$aksi='tambah_penduduk'; $tbl='penduduk'; $det="Tambah penduduk: $nama"; $ip=$_SERVER['REMOTE_ADDR']??'';
|
||||
$l->bind_param("ississ",$uid,$aksi,$tbl,$new_id,$det,$ip);
|
||||
$l->execute();
|
||||
}
|
||||
echo json_encode(["status"=>"success","id"=>$new_id]);
|
||||
} else {
|
||||
echo json_encode(["status"=>"error","msg"=>$conn->error]);
|
||||
}
|
||||
}
|
||||
|
||||
// ===== LAPORAN =====
|
||||
elseif ($tipe === 'laporan') {
|
||||
$nama_pelapor = trim($_POST['nama_pelapor'] ?? 'Anonim') ?: 'Anonim';
|
||||
$deskripsi = trim($_POST['deskripsi'] ?? '');
|
||||
$urgensi = $_POST['urgensi'] ?? 'sedang';
|
||||
$lat = (float)($_POST['lat'] ?? 0);
|
||||
$lng = (float)($_POST['lng'] ?? 0);
|
||||
|
||||
if (!$deskripsi) { echo json_encode(["status"=>"error","msg"=>"Deskripsi wajib diisi"]); exit; }
|
||||
|
||||
$stmt = $conn->prepare("INSERT INTO laporan (nama_pelapor,deskripsi,lat,lng,urgensi) VALUES (?,?,?,?,?)");
|
||||
$stmt->bind_param("ssdds", $nama_pelapor,$deskripsi,$lat,$lng,$urgensi);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status"=>"success","id"=>(int)$conn->insert_id]);
|
||||
} else {
|
||||
echo json_encode(["status"=>"error","msg"=>$stmt->error]);
|
||||
}
|
||||
$stmt->close();
|
||||
}
|
||||
|
||||
// ===== BANTUAN =====
|
||||
elseif ($tipe === 'bantuan') {
|
||||
$pid = (int)($_POST['penduduk_id'] ?? 0);
|
||||
$jid = (int)($_POST['jenis_bantuan_id'] ?? 0);
|
||||
$src = $_POST['sumber_bantuan'] ?? '';
|
||||
$tgl = $_POST['tanggal'] ?? date('Y-m-d');
|
||||
$jml = (float)($_POST['jumlah'] ?? 0);
|
||||
$cat = $_POST['catatan'] ?? '';
|
||||
$stat = $_POST['status'] ?? 'direncanakan';
|
||||
|
||||
$stmt = $conn->prepare("INSERT INTO histori_bantuan (penduduk_id,jenis_bantuan_id,sumber_bantuan,tanggal,jumlah,catatan,status) VALUES (?,?,?,?,?,?,?)");
|
||||
$stmt->bind_param("iissdss",$pid,$jid,$src,$tgl,$jml,$cat,$stat);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status"=>"success","id"=>(int)$conn->insert_id]);
|
||||
} else {
|
||||
echo json_encode(["status"=>"error","msg"=>$stmt->error]);
|
||||
}
|
||||
$stmt->close();
|
||||
}
|
||||
|
||||
// ===== KELUARGA =====
|
||||
elseif ($tipe === 'keluarga') {
|
||||
$no_kk = trim($_POST['no_kk'] ?? '');
|
||||
$alamat = $_POST['alamat'] ?? '';
|
||||
$lat = (float)($_POST['lat'] ?? 0);
|
||||
$lng = (float)($_POST['lng'] ?? 0);
|
||||
|
||||
if (!$no_kk) { echo json_encode(["status"=>"error","msg"=>"No. KK wajib diisi"]); exit; }
|
||||
|
||||
$stmt = $conn->prepare("INSERT INTO keluarga (no_kk,alamat,lat,lng) VALUES (?,?,?,?)");
|
||||
$stmt->bind_param("ssdd",$no_kk,$alamat,$lat,$lng);
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status"=>"success","id"=>(int)$conn->insert_id]);
|
||||
} else {
|
||||
echo json_encode(["status"=>"error","msg"=>$stmt->error]);
|
||||
}
|
||||
$stmt->close();
|
||||
}
|
||||
|
||||
else {
|
||||
http_response_code(400);
|
||||
echo json_encode(["status"=>"error","msg"=>"Tipe tidak dikenal: $tipe"]);
|
||||
}
|
||||
@@ -0,0 +1,318 @@
|
||||
-- ============================================================
|
||||
-- WebGIS Pengentasan Kemiskinan
|
||||
-- Database: webgis_uas
|
||||
-- Versi: 2.0 (Full System)
|
||||
-- ============================================================
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS webgis_uas
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
USE webgis_uas;
|
||||
|
||||
-- ============================================================
|
||||
-- 1. ROLE (hak akses)
|
||||
-- ============================================================
|
||||
CREATE TABLE role (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(50) NOT NULL, -- masyarakat | pengurus | pimpinan | admin
|
||||
deskripsi TEXT
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ============================================================
|
||||
-- 2. USER (login)
|
||||
-- ============================================================
|
||||
CREATE TABLE user (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(80) NOT NULL UNIQUE,
|
||||
password VARCHAR(255) NOT NULL, -- bcrypt
|
||||
nama_lengkap VARCHAR(120),
|
||||
email VARCHAR(120),
|
||||
role_id INT NOT NULL,
|
||||
aktif TINYINT(1) DEFAULT 1,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (role_id) REFERENCES role(id)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ============================================================
|
||||
-- 3. RUMAH IBADAH
|
||||
-- ============================================================
|
||||
CREATE TABLE rumah_ibadah (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
jenis ENUM('masjid','gereja','pura','vihara','klenteng','lainnya') NOT NULL,
|
||||
kontak VARCHAR(50),
|
||||
alamat TEXT,
|
||||
lat DOUBLE NOT NULL,
|
||||
lng DOUBLE NOT NULL,
|
||||
radius DOUBLE DEFAULT 500, -- meter, zona layanan
|
||||
user_id INT, -- pengurus penanggung-jawab
|
||||
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ============================================================
|
||||
-- 4. KELUARGA (Kartu Keluarga)
|
||||
-- ============================================================
|
||||
CREATE TABLE keluarga (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
no_kk VARCHAR(20) UNIQUE NOT NULL,
|
||||
alamat TEXT,
|
||||
lat DOUBLE,
|
||||
lng DOUBLE,
|
||||
rumah_ibadah_id INT,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (rumah_ibadah_id) REFERENCES rumah_ibadah(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ============================================================
|
||||
-- 5. PENDUDUK
|
||||
-- ============================================================
|
||||
CREATE TABLE penduduk (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nik VARCHAR(16) UNIQUE NOT NULL,
|
||||
nama VARCHAR(150) NOT NULL,
|
||||
jenis_kelamin ENUM('L','P') NOT NULL,
|
||||
tanggal_lahir DATE,
|
||||
-- umur dihitung via VIEW / fungsi, tidak disimpan statis
|
||||
status_keluarga ENUM('kepala_keluarga','istri','anak','orang_tua','lainnya') DEFAULT 'lainnya',
|
||||
status_perkawinan ENUM('belum_kawin','kawin','cerai_hidup','cerai_mati') DEFAULT 'belum_kawin',
|
||||
status_hidup ENUM('hidup','meninggal') DEFAULT 'hidup',
|
||||
alamat TEXT,
|
||||
lat DOUBLE,
|
||||
lng DOUBLE,
|
||||
no_hp VARCHAR(20),
|
||||
pekerjaan VARCHAR(100),
|
||||
penghasilan DECIMAL(15,2) DEFAULT 0,
|
||||
status_ekonomi ENUM('miskin','rentan','mampu') DEFAULT 'rentan',
|
||||
-- pendidikan
|
||||
pendidikan_terakhir ENUM('tidak_sekolah','sd','smp','sma','d1','d2','d3','s1','s2','s3') DEFAULT 'tidak_sekolah',
|
||||
status_pendidikan ENUM('sekolah','tidak_sekolah','lulus','putus_sekolah') DEFAULT 'tidak_sekolah',
|
||||
-- relasi
|
||||
keluarga_id INT,
|
||||
rumah_ibadah_id INT,
|
||||
-- meta
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (keluarga_id) REFERENCES keluarga(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (rumah_ibadah_id) REFERENCES rumah_ibadah(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ============================================================
|
||||
-- 6. RIWAYAT PELATIHAN
|
||||
-- ============================================================
|
||||
CREATE TABLE pelatihan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
penduduk_id INT NOT NULL,
|
||||
nama_pelatihan VARCHAR(150),
|
||||
penyelenggara VARCHAR(100),
|
||||
tanggal DATE,
|
||||
sertifikat TINYINT(1) DEFAULT 0,
|
||||
FOREIGN KEY (penduduk_id) REFERENCES penduduk(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ============================================================
|
||||
-- 7. JENIS BANTUAN (master)
|
||||
-- ============================================================
|
||||
CREATE TABLE jenis_bantuan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama VARCHAR(100) NOT NULL, -- sembako, pendidikan, kesehatan, …
|
||||
kategori ENUM('sembako','pendidikan','kesehatan','ekonomi','lainnya') DEFAULT 'lainnya',
|
||||
satuan VARCHAR(50), -- karung, paket, rupiah, …
|
||||
deskripsi TEXT
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ============================================================
|
||||
-- 8. HISTORI BANTUAN
|
||||
-- ============================================================
|
||||
CREATE TABLE histori_bantuan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
penduduk_id INT NOT NULL,
|
||||
jenis_bantuan_id INT NOT NULL,
|
||||
sumber_bantuan VARCHAR(100), -- rumah ibadah / pemerintah / donatur
|
||||
tanggal DATE NOT NULL,
|
||||
jumlah DECIMAL(10,2),
|
||||
status ENUM('direncanakan','disalurkan','selesai') DEFAULT 'direncanakan',
|
||||
catatan TEXT,
|
||||
user_id INT, -- yg menginput
|
||||
FOREIGN KEY (penduduk_id) REFERENCES penduduk(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (jenis_bantuan_id) REFERENCES jenis_bantuan(id),
|
||||
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ============================================================
|
||||
-- 9. LAPORAN MASYARAKAT
|
||||
-- ============================================================
|
||||
CREATE TABLE laporan (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
nama_pelapor VARCHAR(100),
|
||||
penduduk_id INT, -- opsional, terkait siapa
|
||||
deskripsi TEXT NOT NULL,
|
||||
lat DOUBLE,
|
||||
lng DOUBLE,
|
||||
foto VARCHAR(255),
|
||||
urgensi ENUM('rendah','sedang','tinggi','darurat') DEFAULT 'sedang',
|
||||
status ENUM('pending','diverifikasi','diproses','selesai') DEFAULT 'pending',
|
||||
ditangani_oleh INT,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (penduduk_id) REFERENCES penduduk(id) ON DELETE SET NULL,
|
||||
FOREIGN KEY (ditangani_oleh) REFERENCES user(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ============================================================
|
||||
-- 10. CHAT / KOMUNIKASI ANTAR PENGURUS
|
||||
-- ============================================================
|
||||
CREATE TABLE chat (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
from_user INT NOT NULL,
|
||||
to_user INT, -- NULL = broadcast ke semua pengurus
|
||||
pesan TEXT NOT NULL,
|
||||
dibaca TINYINT(1) DEFAULT 0,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (from_user) REFERENCES user(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (to_user) REFERENCES user(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ============================================================
|
||||
-- 11. LOG AKTIVITAS
|
||||
-- ============================================================
|
||||
CREATE TABLE log_aktivitas (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id INT,
|
||||
aksi VARCHAR(100), -- create_penduduk, update_bantuan, …
|
||||
tabel VARCHAR(50),
|
||||
record_id INT,
|
||||
detail TEXT,
|
||||
ip VARCHAR(45),
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
-- ============================================================
|
||||
-- VIEW: umur otomatis
|
||||
-- ============================================================
|
||||
CREATE OR REPLACE VIEW v_penduduk AS
|
||||
SELECT
|
||||
p.*,
|
||||
TIMESTAMPDIFF(YEAR, p.tanggal_lahir, CURDATE()) AS umur,
|
||||
k.no_kk,
|
||||
r.nama AS nama_ibadah,
|
||||
r.jenis AS jenis_ibadah
|
||||
FROM penduduk p
|
||||
LEFT JOIN keluarga k ON p.keluarga_id = k.id
|
||||
LEFT JOIN rumah_ibadah r ON p.rumah_ibadah_id = r.id;
|
||||
|
||||
-- ============================================================
|
||||
-- DATA AWAL: ROLE
|
||||
-- ============================================================
|
||||
INSERT INTO role (nama, deskripsi) VALUES
|
||||
('admin', 'Administrator sistem penuh'),
|
||||
('pengurus', 'Pengurus Rumah Ibadah – input & verifikasi'),
|
||||
('pimpinan', 'Pimpinan Daerah – read-only & dashboard'),
|
||||
('masyarakat','Warga biasa – lapor & lihat data terbatas');
|
||||
|
||||
-- ============================================================
|
||||
-- DATA AWAL: USER (password semua = "password123" → bcrypt)
|
||||
-- ============================================================
|
||||
INSERT INTO user (username, password, nama_lengkap, email, role_id) VALUES
|
||||
('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Administrator', 'admin@webgis.id', 1),
|
||||
('pengurus1', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Ahmad Fauzi', 'ahmad@masjid.id', 2),
|
||||
('pengurus2', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Budi Santoso', 'budi@gereja.id', 2),
|
||||
('pimpinan1', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Camat Pontianak Kota', 'camat@pontianak.id', 3),
|
||||
('warga1', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Dewi Lestari', 'dewi@gmail.com', 4);
|
||||
|
||||
-- ============================================================
|
||||
-- DATA AWAL: RUMAH IBADAH (Pontianak area)
|
||||
-- ============================================================
|
||||
INSERT INTO rumah_ibadah (nama, jenis, kontak, alamat, lat, lng, radius, user_id) VALUES
|
||||
('Masjid Raya Mujahidin', 'masjid', '0561-7001234', 'Jl. Ahmad Yani, Pontianak', -0.0231, 109.3294, 600, 2),
|
||||
('Masjid Al-Falah', 'masjid', '0561-7005678', 'Jl. Gajah Mada, Pontianak', -0.0312, 109.3215, 500, 2),
|
||||
('Gereja Katolik Katedral', 'gereja', '0561-7009012', 'Jl. Rahadi Usman, Pontianak', -0.0280, 109.3320, 550, 3),
|
||||
('Vihara Bodhicitta Maitreya','vihara', '0561-7003456', 'Jl. Diponegoro, Pontianak', -0.0265, 109.3341, 400, NULL),
|
||||
('Gereja GPIB Imanuel', 'gereja', '0561-7007890', 'Jl. Tanjungpura, Pontianak', -0.0245, 109.3270, 500, 3);
|
||||
|
||||
-- ============================================================
|
||||
-- DATA AWAL: KELUARGA
|
||||
-- ============================================================
|
||||
INSERT INTO keluarga (no_kk, alamat, lat, lng, rumah_ibadah_id) VALUES
|
||||
('6171010101230001', 'Jl. Veteran No.12, RT01 RW01', -0.0250, 109.3280, 1),
|
||||
('6171010101230002', 'Jl. Tanjungpura No.45, RT02 RW01',-0.0270, 109.3310, 3),
|
||||
('6171010101230003', 'Jl. Gajah Mada No.7, RT01 RW02', -0.0235, 109.3225, 2),
|
||||
('6171010101230004', 'Jl. Diponegoro No.33, RT03 RW02',-0.0280, 109.3355, 4),
|
||||
('6171010101230005', 'Jl. Ahmad Yani No.88, RT02 RW03',-0.0195, 109.3290, 1);
|
||||
|
||||
-- ============================================================
|
||||
-- DATA AWAL: PENDUDUK (dummy realistis)
|
||||
-- ============================================================
|
||||
INSERT INTO penduduk
|
||||
(nik, nama, jenis_kelamin, tanggal_lahir, status_keluarga, status_perkawinan,
|
||||
status_hidup, alamat, lat, lng, no_hp, pekerjaan, penghasilan,
|
||||
status_ekonomi, pendidikan_terakhir, status_pendidikan, keluarga_id, rumah_ibadah_id)
|
||||
VALUES
|
||||
('6171010101800001','Hasan Basri', 'L','1980-05-15','kepala_keluarga','kawin', 'hidup','Jl. Veteran No.12', -0.02510,109.32810,'081234560001','buruh_harian', 800000, 'miskin', 'sd', 'tidak_sekolah',1,1),
|
||||
('6171010101820002','Siti Rahmawati', 'P','1982-08-22','istri', 'kawin', 'hidup','Jl. Veteran No.12', -0.02510,109.32810,'081234560002','ibu_rumah_tangga',0, 'miskin', 'sd', 'tidak_sekolah',1,1),
|
||||
('6171010101070003','Rizky Pratama', 'L','2007-03-10','anak', 'belum_kawin', 'hidup','Jl. Veteran No.12', -0.02520,109.32820,'', 'pelajar', 0, 'miskin', 'smp', 'sekolah', 1,1),
|
||||
('6171010101750004','Widodo Santoso', 'L','1975-11-30','kepala_keluarga','kawin', 'hidup','Jl. Tanjungpura No.45',-0.02700,109.33100,'081234560004','pedagang', 1500000,'rentan', 'sma', 'lulus', 2,3),
|
||||
('6171010101780005','Maria Goretti', 'P','1978-06-18','istri', 'kawin', 'hidup','Jl. Tanjungpura No.45',-0.02700,109.33100,'081234560005','penjahit', 700000, 'rentan', 'smp', 'lulus', 2,3),
|
||||
('6171010101090006','Anastasia Dewi', 'P','2009-01-25','anak', 'belum_kawin', 'hidup','Jl. Tanjungpura No.45',-0.02710,109.33110,'', 'pelajar', 0, 'rentan', 'sd', 'sekolah', 2,3),
|
||||
('6171010101650007','Darman Husin', 'L','1965-04-04','kepala_keluarga','kawin', 'hidup','Jl. Gajah Mada No.7', -0.02355,109.32260,'081234560007','nelayan', 600000, 'miskin', 'sd', 'tidak_sekolah',3,2),
|
||||
('6171010101680008','Aminah Binti Umar','P','1968-09-12','istri', 'kawin', 'hidup','Jl. Gajah Mada No.7', -0.02355,109.32260,'081234560008','ibu_rumah_tangga',0, 'miskin', 'tidak_sekolah','tidak_sekolah',3,2),
|
||||
('6171010101200009','Fadhil Rahmat', 'L','2020-07-07','anak', 'belum_kawin', 'hidup','Jl. Gajah Mada No.7', -0.02360,109.32270,'', '', 0, 'miskin', 'tidak_sekolah','tidak_sekolah',3,2),
|
||||
('6171010101550010','Candra Wijaya', 'L','1955-12-01','kepala_keluarga','cerai_mati', 'hidup','Jl. Diponegoro No.33',-0.02800,109.33550,'081234560010','pensiunan', 2500000,'mampu', 's1', 'lulus', 4,4),
|
||||
('6171010101850011','Rudi Hartono', 'L','1985-02-14','kepala_keluarga','kawin', 'hidup','Jl. Ahmad Yani No.88',-0.01960,109.32910,'081234560011','wiraswasta', 3000000,'mampu', 's1', 'lulus', 5,1),
|
||||
('6171010101880012','Lina Kusuma', 'P','1988-07-30','istri', 'kawin', 'hidup','Jl. Ahmad Yani No.88',-0.01960,109.32910,'081234560012','guru', 2800000,'mampu', 's1', 'lulus', 5,1),
|
||||
('6171010101700013','Suparman', 'L','1970-03-20','kepala_keluarga','kawin', 'hidup','Jl. Veteran No.22', -0.02430,109.32750,'081234560013','tukang_bangunan',900000,'miskin', 'smp', 'lulus', 1,1),
|
||||
('6171010101120014','Nurul Hidayah', 'P','2012-11-11','anak', 'belum_kawin', 'hidup','Jl. Veteran No.22', -0.02440,109.32760,'', 'pelajar', 0, 'miskin', 'sd', 'sekolah', 1,1),
|
||||
('6171010101920015','Bagas Setiawan', 'L','1992-05-05','kepala_keluarga','kawin', 'hidup','Jl. KH Wahid Hasyim', -0.02900,109.32500,'081234560015','ojek_online', 1200000,'rentan', 'sma', 'lulus', NULL,2);
|
||||
|
||||
-- ============================================================
|
||||
-- DATA AWAL: JENIS BANTUAN
|
||||
-- ============================================================
|
||||
INSERT INTO jenis_bantuan (nama, kategori, satuan, deskripsi) VALUES
|
||||
('Sembako Bulanan', 'sembako', 'paket', 'Paket beras 10kg + minyak + gula'),
|
||||
('Bantuan Pendidikan', 'pendidikan', 'rupiah', 'Biaya SPP / seragam / buku'),
|
||||
('Bantuan Kesehatan', 'kesehatan', 'paket', 'Obat-obatan dan biaya berobat'),
|
||||
('Modal Usaha Kecil', 'ekonomi', 'rupiah', 'Pinjaman tanpa bunga untuk usaha'),
|
||||
('Pakaian Layak Pakai', 'lainnya', 'koli', 'Pakaian bekas layak pakai');
|
||||
|
||||
-- ============================================================
|
||||
-- DATA AWAL: HISTORI BANTUAN
|
||||
-- ============================================================
|
||||
INSERT INTO histori_bantuan (penduduk_id, jenis_bantuan_id, sumber_bantuan, tanggal, jumlah, status, catatan, user_id) VALUES
|
||||
(1, 1, 'Masjid Raya Mujahidin', '2025-01-15', 1, 'selesai', 'Periode Januari 2025', 2),
|
||||
(1, 1, 'Masjid Raya Mujahidin', '2025-02-15', 1, 'selesai', 'Periode Februari 2025',2),
|
||||
(1, 3, 'Puskesmas Kota', '2025-03-10', 1, 'selesai', 'Berobat influenza', 2),
|
||||
(2, 1, 'Masjid Raya Mujahidin', '2025-01-15', 1, 'selesai', 'Periode Januari 2025', 2),
|
||||
(3, 2, 'Dinas Pendidikan', '2025-01-20', 500000,'selesai', 'Bantuan seragam SD', 2),
|
||||
(7, 1, 'Masjid Al-Falah', '2025-02-01', 1, 'selesai', 'Paket sembako', 2),
|
||||
(7, 3, 'Puskesmas Kota', '2025-04-05', 1, 'disalurkan', 'Pengobatan rutin', 2),
|
||||
(8, 1, 'Masjid Al-Falah', '2025-02-01', 1, 'selesai', 'Paket sembako', 2),
|
||||
(13,1, 'Masjid Raya Mujahidin', '2025-03-15', 1, 'selesai', 'Paket sembako Maret', 2),
|
||||
(15,4, 'Gereja GPIB Imanuel', '2025-05-01', 2000000,'direncanakan','Modal usaha warung',3);
|
||||
|
||||
-- ============================================================
|
||||
-- DATA AWAL: LAPORAN MASYARAKAT
|
||||
-- ============================================================
|
||||
INSERT INTO laporan (nama_pelapor, penduduk_id, deskripsi, lat, lng, urgensi, status) VALUES
|
||||
('Anonim', 7, 'Pak Darman sudah 3 hari tidak bisa makan, sakit dan tidak ada yang merawat.', -0.02355,109.32260,'darurat', 'diverifikasi'),
|
||||
('Ibu RT 02', 1, 'Keluarga Hasan Basri membutuhkan bantuan sembako, penghasilan turun drastis.', -0.02510,109.32810,'tinggi', 'diproses'),
|
||||
('Warga Setempat',NULL,'Ada anak kecil di Jl. Gajah Mada yg tidak sekolah dan terlihat kurang gizi.', -0.02360,109.32280,'tinggi', 'pending'),
|
||||
('Bagas S.', NULL,'Kebutuhan modal usaha kecil di kawasan Jl. KH Wahid Hasyim.', -0.02900,109.32500,'sedang', 'pending'),
|
||||
('Anonim', NULL,'Lansia sebatang kara di Jl. Diponegoro membutuhkan perhatian.', -0.02810,109.33560,'sedang', 'pending');
|
||||
|
||||
-- ============================================================
|
||||
-- DATA AWAL: CHAT
|
||||
-- ============================================================
|
||||
INSERT INTO chat (from_user, to_user, pesan) VALUES
|
||||
(2, 3, 'Pak Budi, apakah gereja bisa bantu keluarga Widodo di Jl. Tanjungpura? Kondisi cukup memprihatinkan.'),
|
||||
(3, 2, 'Insya Allah siap. Minggu depan kami ada jadwal distribusi. Boleh koordinasi lebih lanjut.'),
|
||||
(2, NULL, '[BROADCAST] Pengumpulan sembako bulan ini dimulai 10 Juni. Mohon kontribusi semua pihak.');
|
||||
|
||||
-- ============================================================
|
||||
-- DATA AWAL: LOG AKTIVITAS
|
||||
-- ============================================================
|
||||
INSERT INTO log_aktivitas (user_id, aksi, tabel, record_id, detail) VALUES
|
||||
(2,'create','penduduk',1,'Menambah data penduduk Hasan Basri'),
|
||||
(2,'create','histori_bantuan',1,'Menyalurkan sembako ke penduduk ID 1'),
|
||||
(3,'update','laporan',1,'Memverifikasi laporan darurat Darman Husin');
|
||||
Reference in New Issue
Block a user