Files
UAS-SIG/controllers/admin_controller.js
2026-06-03 20:05:50 +07:00

76 lines
3.1 KiB
JavaScript

const db = require('../config/database');
// Menarik seluruh data warga mustahik untuk keperluan dasbor manajemen admin
const ambil_semua_mustahik = (req, res) => {
const kueri_ambil = `SELECT id, nik, nama_kk, no_kk, jumlah_tanggungan, status_validasi FROM MUSTAHIK ORDER BY id DESC`;
db.all(kueri_ambil, [], (error_sql, baris_data) => {
if (error_sql) {
console.error('Gagal fetch data tabel MUSTAHIK:', error_sql.message);
return res.status(500).json({ error: 'Terjadi kegagalan sistem internal server.' });
}
res.status(200).json(baris_data);
});
};
// Menarik rekaman informasi detail warga beserta indikator kemiskinan BPS secara spesifik
const ambil_detail_mustahik = (req, res) => {
const id_warga = req.params.id;
const kueri_detail = `
SELECT m.*, i.luas_lantai_per_kapita, i.material_lantai, i.material_dinding,
i.fasilitas_sanitasi, i.sumber_air_minum, i.sumber_penerangan,
i.pekerjaan_utama, i.pendapatan_bulanan, i.frekuensi_makan, i.kepemilikan_aset
FROM MUSTAHIK m
LEFT JOIN INDIKATOR_BPS i ON m.id = i.id_mustahik
WHERE m.id = ?
`;
/* Baris kompleks: Kita menggunakan kueri SQL 'LEFT JOIN' untuk menyatukan baris data dari
tabel MUSTAHIK dan tabel INDIKATOR_BPS berdasarkan kecocokan Foreign Key (id_mustahik).
Metode 'db.get' dipilih karena pencarian ini bersifat unik dan hanya mengembalikan
satu baris data objek tunggal sesuai parameter ID warga. */
db.get(kueri_detail, [id_warga], (error_sql, baris_data) => {
if (error_sql) {
console.error('Gagal memproses query detail:', error_sql.message);
return res.status(500).json({ error: 'Terjadi kesalahan internal pada database peladen.' });
}
if (!baris_data) {
return res.status(404).json({ error: 'Rekaman data detail warga tidak ditemukan.' });
}
res.status(200).json(baris_data);
});
};
// Melakukan mutasi pembaruan status validasi secara aman parsial
const perbarui_status_validasi = (req, res) => {
const id_warga = req.params.id;
const { status_validasi } = req.body;
if (!status_validasi || !['Verified', 'Rejected', 'Pending'].includes(status_validasi)) {
return res.status(400).json({ error: 'Parameter status validasi tidak sah.' });
}
const kueri_update = `UPDATE MUSTAHIK SET status_validasi = ? WHERE id = ?`;
db.run(kueri_update, [status_validasi, id_warga], function(error_sql) {
if (error_sql) {
console.error('Gagal memproses DML UPDATE status:', error_sql.message);
return res.status(500).json({ error: 'Gagal memperbarui status verifikasi di basis data.' });
}
if (this.changes === 0) {
return res.status(404).json({ error: 'Rekaman data warga tidak ditemukan.' });
}
res.status(200).json({ message: 'Status verifikasi data warga berhasil diperbarui.' });
});
};
module.exports = {
ambil_semua_mustahik,
ambil_detail_mustahik,
perbarui_status_validasi
};