76 lines
3.1 KiB
JavaScript
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
|
|
}; |