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:
@ -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();
|
||||
|
@ -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,
|
||||
|
Reference in New Issue
Block a user