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 };