Fix resident aid saving bug and implement Bantuan Darurat status
This commit is contained in:
+1
-1
@@ -76,7 +76,7 @@ $ibadahList = $db->query("SELECT id, nama, jenis FROM rumah_ibadah ORDER BY nama
|
||||
</code>
|
||||
</div>
|
||||
<div style="margin-top:10px;font-size:11px;color:var(--text3);">
|
||||
⚠️ status_bantuan: belum / sudah / menunggu | Baris pertama bisa berupa header (akan dideteksi otomatis)
|
||||
⚠️ status_bantuan: belum / sudah / menunggu / darurat | Baris pertama bisa berupa header (akan dideteksi otomatis)
|
||||
</div>
|
||||
<a href="<?= BASE_URL ?>/admin/template_penduduk.csv" class="btn btn-ghost btn-sm" style="margin-top:12px;" onclick="downloadTemplate('penduduk');return false;">
|
||||
<i class="bi bi-download"></i> Download Template CSV
|
||||
|
||||
+11
-4
@@ -21,8 +21,9 @@ $stats = [
|
||||
'sudah' => (int)$db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='sudah'")->fetchColumn(),
|
||||
'belum' => (int)$db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='belum'")->fetchColumn(),
|
||||
'menunggu' => (int)$db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='menunggu'")->fetchColumn(),
|
||||
'darurat' => (int)$db->query("SELECT COUNT(*) FROM penduduk_miskin WHERE status_bantuan='darurat'")->fetchColumn(),
|
||||
'anggota' => (int)$db->query("SELECT SUM(jumlah_anggota) FROM penduduk_miskin")->fetchColumn(),
|
||||
'nominal' => (float)$db->query("SELECT COALESCE(SUM(nominal_bantuan),0) FROM penduduk_miskin WHERE status_bantuan='sudah' AND nominal_bantuan IS NOT NULL")->fetchColumn(),
|
||||
'nominal' => (float)$db->query("SELECT COALESCE(SUM(nominal_bantuan),0) FROM penduduk_miskin WHERE status_bantuan IN ('sudah','darurat') AND nominal_bantuan IS NOT NULL")->fetchColumn(),
|
||||
];
|
||||
|
||||
// Per jenis ibadah
|
||||
@@ -103,6 +104,11 @@ $trenBulan = $db->query("
|
||||
<div class="stat-value"><?= $stats['menunggu'] ?></div>
|
||||
<div class="stat-label">Menunggu Verif.</div>
|
||||
</div>
|
||||
<div class="stat-card purple" style="--purple:#a855f7">
|
||||
<div class="stat-icon">🚨</div>
|
||||
<div class="stat-value"><?= $stats['darurat'] ?></div>
|
||||
<div class="stat-label">Bantuan Darurat (Musibah)</div>
|
||||
</div>
|
||||
<div class="stat-card blue">
|
||||
<div class="stat-icon">👤</div>
|
||||
<div class="stat-value"><?= number_format($stats['anggota'], 0, ',', '.') ?></div>
|
||||
@@ -133,6 +139,7 @@ $trenBulan = $db->query("
|
||||
<span style="color:#22c55e">● Sudah: <?= $stats['sudah'] ?></span>
|
||||
<span style="color:#ef4444">● Belum: <?= $stats['belum'] ?></span>
|
||||
<span style="color:#f59e0b">● Menunggu: <?= $stats['menunggu'] ?></span>
|
||||
<span style="color:#a855f7">● Darurat: <?= $stats['darurat'] ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -223,9 +230,9 @@ const cOpts = { responsive: true, maintainAspectRatio: false,
|
||||
new Chart(document.getElementById('chart-status').getContext('2d'), {
|
||||
type: 'doughnut',
|
||||
data: {
|
||||
labels: ['Sudah Dibantu','Belum Dibantu','Menunggu'],
|
||||
datasets: [{ data: [<?= $stats['sudah'] ?>,<?= $stats['belum'] ?>,<?= $stats['menunggu'] ?>],
|
||||
backgroundColor: ['rgba(34,197,94,0.8)','rgba(239,68,68,0.8)','rgba(245,158,11,0.8)'],
|
||||
labels: ['Sudah Dibantu','Belum Dibantu','Menunggu','Bantuan Darurat'],
|
||||
datasets: [{ data: [<?= $stats['sudah'] ?>,<?= $stats['belum'] ?>,<?= $stats['menunggu'] ?>,<?= $stats['darurat'] ?>],
|
||||
backgroundColor: ['rgba(34,197,94,0.8)','rgba(239,68,68,0.8)','rgba(245,158,11,0.8)','rgba(168,85,247,0.8)'],
|
||||
borderColor: ['#161b27'], borderWidth: 2 }]
|
||||
},
|
||||
options: { ...cOpts, cutout:'65%' }
|
||||
|
||||
@@ -79,6 +79,7 @@ $ibadahList = $db->query("SELECT id, nama, jenis FROM rumah_ibadah ORDER BY nama
|
||||
<option value="belum" <?= $filterSt==='belum'?'selected':'' ?>>❌ Belum Dibantu</option>
|
||||
<option value="menunggu" <?= $filterSt==='menunggu'?'selected':'' ?>>⏳ Menunggu</option>
|
||||
<option value="sudah" <?= $filterSt==='sudah'?'selected':'' ?>>✅ Sudah Dibantu</option>
|
||||
<option value="darurat" <?= $filterSt==='darurat'?'selected':'' ?>>🚨 Bantuan Darurat</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
@@ -223,6 +224,7 @@ $ibadahList = $db->query("SELECT id, nama, jenis FROM rumah_ibadah ORDER BY nama
|
||||
<option value="belum">❌ Belum Dibantu</option>
|
||||
<option value="menunggu">⏳ Menunggu Verifikasi</option>
|
||||
<option value="sudah">✅ Sudah Dibantu</option>
|
||||
<option value="darurat">🚨 Bantuan Darurat (Musibah)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="m-bantuan-fields" style="display:none;">
|
||||
@@ -321,7 +323,7 @@ function fillMModal(data) {
|
||||
function toggleMBantuan() {
|
||||
const statusVal = document.getElementById('m-status').value;
|
||||
document.getElementById('m-bantuan-fields').style.display =
|
||||
(statusVal === 'sudah' || statusVal === 'menunggu') ? 'block' : 'none';
|
||||
(statusVal === 'sudah' || statusVal === 'menunggu' || statusVal === 'darurat') ? 'block' : 'none';
|
||||
}
|
||||
|
||||
async function loadMAnggota(pid) {
|
||||
@@ -400,7 +402,7 @@ document.getElementById('btn-save-m').addEventListener('click', async function()
|
||||
this.disabled = true; this.textContent = '⏳ Menyimpan...';
|
||||
try {
|
||||
const url = editId ? `${BASE}/api/penduduk_miskin.php?id=${editId}` : `${BASE}/api/penduduk_miskin.php`;
|
||||
const resp = await fetch(url, { method: editId?'PUT':'POST', body: fd });
|
||||
const resp = await fetch(url, { method: 'POST', body: fd });
|
||||
const json = await resp.json();
|
||||
if (json.success) { location.reload(); } else { Swal.fire('Error', json.message, 'error'); }
|
||||
} catch { Swal.fire('Error','Gagal menyimpan','error'); }
|
||||
|
||||
Reference in New Issue
Block a user