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:
Khafidh Fuadi
2025-03-25 21:03:40 +07:00
parent 32736be867
commit 3b963178f4
20 changed files with 2191 additions and 818 deletions

View File

@ -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,

View File

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