Fix resident aid saving bug and implement Bantuan Darurat status

This commit is contained in:
fananazril
2026-06-13 13:06:30 +07:00
parent bd95f5581d
commit ac5fbeb72e
14 changed files with 55 additions and 20 deletions
+1 -1
View File
@@ -82,7 +82,7 @@ if ($type === 'penduduk') {
$subtitle = 'WebGIS Sebaran Penduduk Miskin — ' . APP_NAME;
$cols = ['No', 'Nama KK', 'NIK', 'Anggota', 'Kecamatan', 'Status', 'Nominal Bantuan', 'Rumah Ibadah', 'Jarak'];
$tableRows = array_map(function($r, $i) {
$sc = ['sudah' => '#22c55e', 'menunggu' => '#f59e0b', 'belum' => '#ef4444'][$r['status_bantuan']] ?? '#ef4444';
$sc = ['sudah' => '#22c55e', 'menunggu' => '#f59e0b', 'belum' => '#ef4444', 'darurat' => '#a855f7'][$r['status_bantuan']] ?? '#ef4444';
return [$i + 1, $r['kk_nama'], $r['nik'] ?: '—', $r['jumlah_anggota'],
$r['kecamatan'] ?: '—',
"<span style='color:{$sc};font-weight:700'>".ucfirst($r['status_bantuan']).'</span>',
+1 -1
View File
@@ -95,7 +95,7 @@ if ($type === 'penduduk') {
$lng = (float)$row[7];
if ($lat === 0.0 && $lng === 0.0) { $skipped++; continue; }
$status = in_array($row[8] ?? '', ['sudah','belum','menunggu']) ? $row[8] : 'belum';
$status = in_array($row[8] ?? '', ['sudah','belum','menunggu','darurat']) ? $row[8] : 'belum';
$tanggal_bantuan = !empty($row[10]) ? sanitize($row[10]) : null;
$nominal_bantuan = isset($row[11]) && $row[11] !== '' ? (float)str_replace(['.', ','], ['', '.'], $row[11]) : null;
+9 -3
View File
@@ -20,6 +20,11 @@ $db = getDB();
$method = $_SERVER['REQUEST_METHOD'];
$id = isset($_GET['id']) ? (int)$_GET['id'] : null;
// Override method if it's a POST request with an ID, to support multipart/form-data in updates (PUT)
if ($method === 'POST' && $id !== null) {
$method = 'PUT';
}
// ── GET ────────────────────────────────────────────────────────
if ($method === 'GET') {
if ($id) {
@@ -155,9 +160,10 @@ if ($method === 'POST') {
if ($method === 'PUT') {
if (!$id) jsonResponse(['success' => false, 'message' => 'ID wajib disertakan'], 400);
// Cek apakah multipart (ada file) atau JSON
$isMultipart = str_contains($_SERVER['CONTENT_TYPE'] ?? '', 'multipart/form-data');
$body = $isMultipart ? $_POST : (json_decode(file_get_contents('php://input'), true) ?? []);
// Cek apakah form-data (ada file / urlencoded) atau JSON
$contentType = $_SERVER['CONTENT_TYPE'] ?? '';
$isForm = str_contains($contentType, 'multipart/form-data') || str_contains($contentType, 'application/x-www-form-urlencoded');
$body = $isForm ? $_POST : (json_decode(file_get_contents('php://input'), true) ?? []);
$current = $db->prepare("SELECT * FROM penduduk_miskin WHERE id = ?");
$current->execute([$id]);
+3 -1
View File
@@ -16,7 +16,8 @@ $totalMiskin = $db->query("SELECT COUNT(*) FROM penduduk_miskin")->fetchColumn()
$sudahDibantu = $db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='sudah'")->fetchColumn();
$belumDibantu = $db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='belum'")->fetchColumn();
$menunggu = $db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='menunggu'")->fetchColumn();
$totalNominal = $db->query("SELECT COALESCE(SUM(nominal_bantuan),0) FROM penduduk_miskin WHERE status_bantuan='sudah' AND nominal_bantuan IS NOT NULL")->fetchColumn();
$darurat = $db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='darurat'")->fetchColumn();
$totalNominal = $db->query("SELECT COALESCE(SUM(nominal_bantuan),0) FROM penduduk_miskin WHERE status_bantuan IN ('sudah','darurat') AND nominal_bantuan IS NOT NULL")->fetchColumn();
$totalNominalAll = $db->query("SELECT COALESCE(SUM(nominal_bantuan),0) FROM penduduk_miskin WHERE nominal_bantuan IS NOT NULL")->fetchColumn();
// Per jenis ibadah
@@ -54,6 +55,7 @@ jsonResponse([
'sudah_dibantu' => (int)$sudahDibantu,
'belum_dibantu' => (int)$belumDibantu,
'menunggu' => (int)$menunggu,
'darurat' => (int)$darurat,
'total_nominal' => (float)$totalNominal,
'total_nominal_all' => (float)$totalNominalAll,
'jenis_stats' => $jenisStats,