Perbarui model PenerimaPenyaluran untuk menyertakan properti qrCodeHash dan hapus properti yang tidak digunakan. Modifikasi controller DetailPenyaluranController untuk menambahkan fungsi pengambilan data penerima penyaluran berdasarkan ID. Sesuaikan tampilan di halaman konfirmasi penerima dan detail penerimaan untuk meningkatkan pengalaman pengguna. Hapus kode yang tidak diperlukan untuk menjaga kebersihan kode.
This commit is contained in:
@ -604,4 +604,59 @@ class DetailPenyaluranController extends GetxController {
|
||||
isExporting.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Fungsi untuk mengambil data penerima penyaluran berdasarkan ID
|
||||
Future<PenerimaPenyaluranModel?> getPenerimaPenyaluranById(
|
||||
String penerimaPenyaluranId) async {
|
||||
try {
|
||||
// Ambil data penerima penyaluran dengan relasinya
|
||||
final data = await _supabaseService.client
|
||||
.from('penerima_penyaluran')
|
||||
.select(
|
||||
'*, warga:warga_id(*), stok_bantuan:stok_bantuan_id(*), penyaluran_bantuan:penyaluran_bantuan_id(*)')
|
||||
.eq('id', penerimaPenyaluranId)
|
||||
.single();
|
||||
|
||||
// Konversi data ke model
|
||||
final Map<String, dynamic> sanitizedData =
|
||||
Map<String, dynamic>.from(data);
|
||||
|
||||
// Konversi jumlah_bantuan ke double jika bertipe String
|
||||
if (sanitizedData['jumlah_bantuan'] is String) {
|
||||
sanitizedData['jumlah_bantuan'] =
|
||||
double.tryParse(sanitizedData['jumlah_bantuan'] as String);
|
||||
}
|
||||
|
||||
return PenerimaPenyaluranModel.fromJson(sanitizedData);
|
||||
} catch (e) {
|
||||
print('Error mengambil data penerima penyaluran: $e');
|
||||
Get.snackbar(
|
||||
'Error',
|
||||
'Terjadi kesalahan saat mengambil data penerima',
|
||||
backgroundColor: Colors.red,
|
||||
colorText: Colors.white,
|
||||
);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Fungsi untuk memuat penyaluran dengan id tertentu
|
||||
Future<void> getDetailPenyaluran(String penyaluranId) async {
|
||||
try {
|
||||
isLoading.value = true;
|
||||
|
||||
// Ambil data penyaluran
|
||||
await loadPenyaluranData(penyaluranId);
|
||||
} catch (e) {
|
||||
print('Error getDetailPenyaluran: $e');
|
||||
Get.snackbar(
|
||||
'Error',
|
||||
'Gagal memuat data detail penyaluran',
|
||||
backgroundColor: Colors.red,
|
||||
colorText: Colors.white,
|
||||
);
|
||||
} finally {
|
||||
isLoading.value = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -376,7 +376,6 @@ class PelaksanaanPenyaluranController extends GetxController {
|
||||
statusPenerimaan: 'DITERIMA',
|
||||
tanggalPenerimaan: penerimaPenyaluran[index].tanggalPenerimaan,
|
||||
buktiPenerimaan: penerimaPenyaluran[index].buktiPenerimaan,
|
||||
keterangan: penerimaPenyaluran[index].keterangan,
|
||||
jumlahBantuan: penerimaPenyaluran[index].jumlahBantuan,
|
||||
stokBantuanId: penerimaPenyaluran[index].stokBantuanId,
|
||||
warga: penerimaPenyaluran[index].warga,
|
||||
|
@ -1406,16 +1406,10 @@ class DetailPenyaluranPage extends StatelessWidget {
|
||||
|
||||
void _showKonfirmasiPenerimaan(
|
||||
BuildContext context, PenerimaPenyaluranModel penerima) {
|
||||
// Dapatkan data jumlah bantuan dari penerima
|
||||
final jumlahBantuan = penerima.jumlahBantuan?.toString() ?? '5';
|
||||
|
||||
// Navigasi ke halaman konfirmasi penerima
|
||||
// Navigasi ke halaman konfirmasi penerima dengan hanya mengirimkan ID
|
||||
Get.to(
|
||||
() => KonfirmasiPenerimaPage(
|
||||
penerima: penerima,
|
||||
bentukBantuan:
|
||||
null, // Tidak ada data bentuk bantuan yang tersedia langsung
|
||||
jumlahBantuan: jumlahBantuan,
|
||||
penerimaPenyaluranId: penerima.id!,
|
||||
tanggalPenyaluran: controller.penyaluran.value?.tanggalPenyaluran,
|
||||
),
|
||||
)?.then((result) {
|
||||
@ -1778,9 +1772,6 @@ class DetailPenyaluranPage extends StatelessWidget {
|
||||
if (penerima.jumlahBantuan != null)
|
||||
_buildInfoRow('Jumlah Bantuan',
|
||||
penerima.jumlahBantuan.toString()),
|
||||
if (penerima.keterangan != null &&
|
||||
penerima.keterangan!.isNotEmpty)
|
||||
_buildInfoRow('Keterangan', penerima.keterangan!),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -158,24 +158,6 @@ class WargaDetailPenerimaanView extends GetView<WargaDashboardController> {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
penyaluran.namaPenyaluran ??
|
||||
penyaluran.keterangan ??
|
||||
'Bantuan',
|
||||
style: const TextStyle(
|
||||
fontSize: 22,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Colors.black,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
if (penyaluran.deskripsiPenyaluran != null &&
|
||||
penyaluran.deskripsiPenyaluran!.isNotEmpty)
|
||||
Padding(
|
||||
@ -452,16 +434,6 @@ class WargaDetailPenerimaanView extends GetView<WargaDashboardController> {
|
||||
],
|
||||
),
|
||||
],
|
||||
if (penyaluran.keterangan != null &&
|
||||
penyaluran.keterangan!.isNotEmpty) ...[
|
||||
const Divider(height: 24),
|
||||
_buildDetailItem(
|
||||
icon: Icons.note,
|
||||
title: 'Keterangan',
|
||||
value: penyaluran.keterangan!,
|
||||
statusColor: null,
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
|
Reference in New Issue
Block a user