Refactor stok bantuan model dan kontroller untuk mendukung kategori bantuan

- Ubah model StokBantuanModel dari 'jenis bantuan' menjadi 'kategori bantuan'
- Perbarui metode loadJenisBantuanData() menjadi loadKategoriBantuanData()
- Tambahkan metode baru untuk menghitung stok hampir habis dan segera kadaluarsa
- Update tampilan dan form untuk menggunakan kategori bantuan
- Perbaiki logika navigasi dan binding pada berbagai modul terkait
This commit is contained in:
Khafidh Fuadi
2025-03-11 22:14:07 +07:00
parent cdbd659d63
commit f7397cb9cf
12 changed files with 596 additions and 408 deletions

View File

@ -17,8 +17,8 @@ class StokBantuanController extends GetxController {
final RxDouble stokMasuk = 0.0.obs;
final RxDouble stokKeluar = 0.0.obs;
// Data untuk jenis bantuan
final RxList<Map<String, dynamic>> daftarJenisBantuan =
// Data untuk kategori bantuan
final RxList<Map<String, dynamic>> daftarKategoriBantuan =
<Map<String, dynamic>>[].obs;
// Controller untuk pencarian
@ -31,7 +31,7 @@ class StokBantuanController extends GetxController {
void onInit() {
super.onInit();
loadStokBantuanData();
loadJenisBantuanData();
loadKategoriBantuanData();
// Listener untuk pencarian
searchController.addListener(() {
@ -74,14 +74,14 @@ class StokBantuanController extends GetxController {
}
}
Future<void> loadJenisBantuanData() async {
Future<void> loadKategoriBantuanData() async {
try {
final jenisBantuanData = await _supabaseService.getJenisBantuan();
if (jenisBantuanData != null) {
daftarJenisBantuan.value = jenisBantuanData;
final kategoriBantuanData = await _supabaseService.getKategoriBantuan();
if (kategoriBantuanData != null) {
daftarKategoriBantuan.value = kategoriBantuanData;
}
} catch (e) {
print('Error loading jenis bantuan data: $e');
print('Error loading kategori bantuan data: $e');
}
}
@ -167,7 +167,7 @@ class StokBantuanController extends GetxController {
isLoading.value = true;
try {
await loadStokBantuanData();
await loadJenisBantuanData();
await loadKategoriBantuanData();
} finally {
isLoading.value = false;
}
@ -194,4 +194,18 @@ class StokBantuanController extends GetxController {
.toList();
}
}
// Metode untuk mendapatkan jumlah stok yang hampir habis (stok <= 10)
int getStokHampirHabis() {
return daftarStokBantuan.where((stok) => (stok.jumlah ?? 0) <= 10).length;
}
// Metode untuk mendapatkan jumlah stok yang segera kadaluarsa (dalam 30 hari)
int getStokSegeraKadaluarsa() {
return daftarStokBantuan
.where((stok) =>
stok.tanggalKadaluarsa != null &&
stok.tanggalKadaluarsa!.difference(DateTime.now()).inDays <= 30)
.length;
}
}