Perbarui dependensi dengan menambahkan paket percent_indicator versi 4.2.4. Modifikasi file pubspec.yaml dan pubspec.lock untuk mencerminkan perubahan ini. Selain itu, perbarui status penerimaan di PelaksanaanPenyaluranController dari 'SUDAHMENERIMA' menjadi 'DITERIMA' untuk konsistensi. Tambahkan fungsionalitas baru di PetugasDesaDashboardController untuk memuat jadwal hari ini dan total penitipan terverifikasi. Perbarui tampilan di beberapa view untuk meningkatkan pengalaman pengguna dan konsistensi data.
This commit is contained in:
@ -287,7 +287,7 @@ class PelaksanaanPenyaluranController extends GetxController {
|
||||
// Metode untuk mendapatkan warna status penerimaan
|
||||
Color getStatusColor(String status) {
|
||||
switch (status.toUpperCase()) {
|
||||
case 'SUDAHMENERIMA':
|
||||
case 'DITERIMA':
|
||||
return AppTheme.successColor;
|
||||
case 'BELUMMENERIMA':
|
||||
return AppTheme.warningColor;
|
||||
@ -299,7 +299,7 @@ class PelaksanaanPenyaluranController extends GetxController {
|
||||
// Metode untuk mendapatkan ikon status penerimaan
|
||||
IconData getStatusIcon(String status) {
|
||||
switch (status.toUpperCase()) {
|
||||
case 'SUDAHMENERIMA':
|
||||
case 'DITERIMA':
|
||||
return Icons.check_circle;
|
||||
case 'BELUMMENERIMA':
|
||||
return Icons.event_available;
|
||||
@ -311,7 +311,7 @@ class PelaksanaanPenyaluranController extends GetxController {
|
||||
// Metode untuk mendapatkan teks status penerimaan
|
||||
String getStatusText(String status) {
|
||||
switch (status.toUpperCase()) {
|
||||
case 'SUDAHMENERIMA':
|
||||
case 'DITERIMA':
|
||||
return 'Sudah Menerima';
|
||||
case 'BELUMMENERIMA':
|
||||
return 'Belum Menerima';
|
||||
@ -373,7 +373,7 @@ class PelaksanaanPenyaluranController extends GetxController {
|
||||
createdAt: penerimaPenyaluran[index].createdAt,
|
||||
penyaluranBantuanId: penerimaPenyaluran[index].penyaluranBantuanId,
|
||||
wargaId: penerimaPenyaluran[index].wargaId,
|
||||
statusPenerimaan: 'SUDAHMENERIMA',
|
||||
statusPenerimaan: 'DITERIMA',
|
||||
tanggalPenerimaan: penerimaPenyaluran[index].tanggalPenerimaan,
|
||||
buktiPenerimaan: penerimaPenyaluran[index].buktiPenerimaan,
|
||||
keterangan: penerimaPenyaluran[index].keterangan,
|
||||
|
@ -18,12 +18,18 @@ class PetugasDesaDashboardController extends GetxController {
|
||||
final RxInt totalPenerima = 0.obs;
|
||||
final RxInt totalBantuan = 0.obs;
|
||||
final RxInt totalPenyaluran = 0.obs;
|
||||
final RxInt totalSemuaPenyaluran = 0.obs;
|
||||
final RxInt totalPenitipanTerverifikasi = 0.obs;
|
||||
final RxDouble progressPenyaluran = 0.0.obs;
|
||||
|
||||
// Data untuk notifikasi
|
||||
final RxList<NotifikasiModel> notifikasiBelumDibaca = <NotifikasiModel>[].obs;
|
||||
final RxInt jumlahNotifikasiBelumDibaca = 0.obs;
|
||||
|
||||
// Data untuk jadwal hari ini
|
||||
final RxList<Map<String, dynamic>> jadwalHariIni =
|
||||
<Map<String, dynamic>>[].obs;
|
||||
|
||||
// Controller untuk pencarian
|
||||
final TextEditingController searchController = TextEditingController();
|
||||
|
||||
@ -45,6 +51,7 @@ class PetugasDesaDashboardController extends GetxController {
|
||||
loadUserProfile();
|
||||
loadDashboardData();
|
||||
loadNotifikasiData();
|
||||
loadJadwalHariIni();
|
||||
}
|
||||
|
||||
@override
|
||||
@ -76,18 +83,24 @@ class PetugasDesaDashboardController extends GetxController {
|
||||
final penerimaData = await _supabaseService.getTotalPenerima();
|
||||
totalPenerima.value = penerimaData ?? 0;
|
||||
|
||||
// Mengambil data total bantuan
|
||||
final bantuanData = await _supabaseService.getTotalBantuan();
|
||||
totalBantuan.value = bantuanData ?? 0;
|
||||
// Mengambil data total penitipan terverifikasi
|
||||
final penitipanData =
|
||||
await _supabaseService.getTotalPenitipanTerverifikasi();
|
||||
totalPenitipanTerverifikasi.value = penitipanData ?? 0;
|
||||
|
||||
// Mengambil data total penyaluran
|
||||
// Mengambil data total penyaluran terlaksana
|
||||
final penyaluranData = await _supabaseService.getTotalPenyaluran();
|
||||
totalPenyaluran.value = penyaluranData ?? 0;
|
||||
|
||||
// Menghitung progress penyaluran
|
||||
if (totalBantuan.value > 0) {
|
||||
// Mengambil data total semua penyaluran
|
||||
final semuaPenyaluranData =
|
||||
await _supabaseService.getTotalSemuaPenyaluran();
|
||||
totalSemuaPenyaluran.value = semuaPenyaluranData ?? 0;
|
||||
|
||||
// Menghitung progress penyaluran (persentase penyaluran yang terlaksana dari total semua penyaluran)
|
||||
if (totalSemuaPenyaluran.value > 0) {
|
||||
progressPenyaluran.value =
|
||||
(totalPenyaluran.value / totalBantuan.value) * 100;
|
||||
(totalPenyaluran.value / totalSemuaPenyaluran.value) * 100;
|
||||
} else {
|
||||
progressPenyaluran.value = 0.0;
|
||||
}
|
||||
@ -114,11 +127,28 @@ class PetugasDesaDashboardController extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> loadJadwalHariIni() async {
|
||||
try {
|
||||
final jadwalData = await _supabaseService.getJadwalHariIni();
|
||||
if (jadwalData != null) {
|
||||
jadwalHariIni.value = jadwalData;
|
||||
}
|
||||
} catch (e) {
|
||||
print('Error loading jadwal hari ini: $e');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> refreshData() async {
|
||||
isLoading.value = true;
|
||||
try {
|
||||
await loadDashboardData();
|
||||
await loadNotifikasiData();
|
||||
await Future.wait([
|
||||
loadUserProfile(),
|
||||
loadDashboardData(),
|
||||
loadNotifikasiData(),
|
||||
loadJadwalHariIni(),
|
||||
]);
|
||||
} catch (e) {
|
||||
print('Error refreshing data: $e');
|
||||
} finally {
|
||||
isLoading.value = false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user