Perbarui model dan tampilan untuk mendukung status penyaluran dalam aplikasi. Tambahkan properti statusPenyaluran pada PenerimaPenyaluranModel dan SkemaBantuanModel. Modifikasi tampilan di BantuanCard dan StatusBadge untuk menampilkan status penyaluran dengan lebih baik. Hapus penggunaan prioritas di beberapa model dan tampilan untuk menyederhanakan kode. Implementasikan logika baru di JadwalPenyaluranController untuk memperbarui stok bantuan berdasarkan jumlah yang diterima.

This commit is contained in:
Khafidh Fuadi
2025-03-19 22:57:42 +07:00
parent 0597f0aea0
commit 3b12c7af86
22 changed files with 1886 additions and 1146 deletions

View File

@ -383,6 +383,9 @@ class JadwalPenyaluranController extends GetxController {
required String lokasiPenyaluranId,
required int jumlahPenerima,
required DateTime? tanggalPenyaluran,
required double jumlahDiterimaPerOrang,
required String stokBantuanId,
required double totalStokDibutuhkan,
}) async {
isLoading.value = true;
try {
@ -427,6 +430,7 @@ class JadwalPenyaluranController extends GetxController {
'stok_bantuan_id': skemaBantuanCache[skemaId]?.stokBantuanId,
'status_penerimaan': 'BELUMMENERIMA',
'qr_code_hash': qrCodeHash,
'jumlah_bantuan': jumlahDiterimaPerOrang,
};
// Simpan data penerima ke database
@ -435,6 +439,29 @@ class JadwalPenyaluranController extends GetxController {
.insert(penerimaPenyaluran);
}
// Update stok bantuan (kurangi dengan total stok yang dibutuhkan)
try {
// Dapatkan stok saat ini
final stokData = await _supabaseService.client
.from('stok_bantuan')
.select('total_stok')
.eq('id', stokBantuanId)
.single();
if (stokData != null && stokData['total_stok'] != null) {
final currentStok = stokData['total_stok'].toDouble();
final newStok = currentStok - totalStokDibutuhkan;
// Update stok bantuan dengan nilai baru
await _supabaseService.client
.from('stok_bantuan')
.update({'total_stok': newStok}).eq('id', stokBantuanId);
}
} catch (e) {
print('Error updating stok bantuan: $e');
// Tidak throw exception di sini karena penyaluran sudah disimpan
}
// Setelah berhasil menambahkan, refresh data
await loadJadwalData();
await loadPermintaanPenjadwalanData();

View File

@ -108,7 +108,6 @@ class PengaduanController extends GetxController {
required String tindakan,
required String kategoriTindakan,
required String statusTindakan,
required String prioritas,
String? catatan,
String? hasilTindakan,
required List<String> buktiTindakanPaths,
@ -134,7 +133,6 @@ class PengaduanController extends GetxController {
'tindakan': tindakan,
'catatan': catatan,
'status_tindakan': statusTindakan,
'prioritas': prioritas,
'kategori_tindakan': kategoriTindakan,
'hasil_tindakan': hasilTindakan,
'tanggal_tindakan': DateTime.now().toIso8601String(),
@ -188,7 +186,6 @@ class PengaduanController extends GetxController {
required String tindakan,
required String kategoriTindakan,
required String statusTindakan,
required String prioritas,
String? catatan,
String? hasilTindakan,
required List<String> buktiTindakanPaths,
@ -217,7 +214,6 @@ class PengaduanController extends GetxController {
'tindakan': tindakan,
'catatan': catatan,
'status_tindakan': statusTindakan,
'prioritas': prioritas,
'kategori_tindakan': kategoriTindakan,
'hasil_tindakan': hasilTindakan,
'bukti_tindakan': buktiTindakanUrls,