Tambahkan dependensi baru timeline_tile versi 2.0.0 ke dalam pubspec.yaml dan pubspec.lock. Perbarui model PengaduanModel dan TindakanPengaduanModel untuk mendukung struktur data yang lebih kompleks, termasuk penambahan properti baru. Modifikasi PengaduanController untuk menggunakan metode baru dalam mengambil data pengaduan dengan detail penerima penyaluran. Perbarui tampilan di PengaduanView untuk meningkatkan pengalaman pengguna dengan menampilkan informasi penyaluran bantuan yang lebih lengkap.
This commit is contained in:
@ -5,26 +5,28 @@ class PengaduanModel {
|
||||
final String? judul;
|
||||
final String? deskripsi;
|
||||
final String? status;
|
||||
final String? kategori;
|
||||
final String? pelapor;
|
||||
final String? kontakPelapor;
|
||||
final List<String>? gambarUrls;
|
||||
final String? wargaId;
|
||||
final List<dynamic>? fotoPengaduan;
|
||||
final String? penerimaPenyaluranId;
|
||||
final DateTime? tanggalPengaduan;
|
||||
final DateTime? createdAt;
|
||||
final DateTime? updatedAt;
|
||||
final Map<String, dynamic>? penerimaPenyaluran;
|
||||
final Map<String, dynamic>? warga;
|
||||
|
||||
PengaduanModel({
|
||||
this.id,
|
||||
this.judul,
|
||||
this.deskripsi,
|
||||
this.status,
|
||||
this.kategori,
|
||||
this.pelapor,
|
||||
this.kontakPelapor,
|
||||
this.gambarUrls,
|
||||
this.wargaId,
|
||||
this.fotoPengaduan,
|
||||
this.penerimaPenyaluranId,
|
||||
this.tanggalPengaduan,
|
||||
this.createdAt,
|
||||
this.updatedAt,
|
||||
this.penerimaPenyaluran,
|
||||
this.warga,
|
||||
});
|
||||
|
||||
factory PengaduanModel.fromRawJson(String str) =>
|
||||
@ -37,12 +39,9 @@ class PengaduanModel {
|
||||
judul: json["judul"],
|
||||
deskripsi: json["deskripsi"],
|
||||
status: json["status"],
|
||||
kategori: json["kategori"],
|
||||
pelapor: json["pelapor"],
|
||||
kontakPelapor: json["kontak_pelapor"],
|
||||
gambarUrls: json["gambar_urls"] == null
|
||||
? null
|
||||
: List<String>.from(json["gambar_urls"].map((x) => x)),
|
||||
wargaId: json["warga_id"],
|
||||
fotoPengaduan: json["foto_pengaduan"],
|
||||
penerimaPenyaluranId: json["penerima_penyaluran_id"],
|
||||
tanggalPengaduan: json["tanggal_pengaduan"] != null
|
||||
? DateTime.parse(json["tanggal_pengaduan"])
|
||||
: null,
|
||||
@ -52,6 +51,8 @@ class PengaduanModel {
|
||||
updatedAt: json["updated_at"] != null
|
||||
? DateTime.parse(json["updated_at"])
|
||||
: null,
|
||||
penerimaPenyaluran: json["penerima_penyaluran"],
|
||||
warga: json["warga"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
@ -59,14 +60,47 @@ class PengaduanModel {
|
||||
"judul": judul,
|
||||
"deskripsi": deskripsi,
|
||||
"status": status,
|
||||
"kategori": kategori,
|
||||
"pelapor": pelapor,
|
||||
"kontak_pelapor": kontakPelapor,
|
||||
"gambar_urls": gambarUrls == null
|
||||
? null
|
||||
: List<dynamic>.from(gambarUrls!.map((x) => x)),
|
||||
"warga_id": wargaId,
|
||||
"foto_pengaduan": fotoPengaduan,
|
||||
"penerima_penyaluran_id": penerimaPenyaluranId,
|
||||
"tanggal_pengaduan": tanggalPengaduan?.toIso8601String(),
|
||||
"created_at": createdAt?.toIso8601String(),
|
||||
"updated_at": updatedAt?.toIso8601String(),
|
||||
"penerima_penyaluran": penerimaPenyaluran,
|
||||
"warga": warga,
|
||||
};
|
||||
|
||||
// Getter untuk mendapatkan informasi penyaluran bantuan
|
||||
Map<String, dynamic>? get penyaluranBantuan {
|
||||
return penerimaPenyaluran?['penyaluran_bantuan'];
|
||||
}
|
||||
|
||||
// Getter untuk mendapatkan informasi stok bantuan
|
||||
Map<String, dynamic>? get stokBantuan {
|
||||
return penerimaPenyaluran?['stok_bantuan'];
|
||||
}
|
||||
|
||||
// Getter untuk mendapatkan nama penyaluran
|
||||
String get namaPenyaluran {
|
||||
return penyaluranBantuan?['nama'] ?? 'Tidak ada data';
|
||||
}
|
||||
|
||||
// Getter untuk mendapatkan deskripsi penyaluran
|
||||
String get deskripsiPenyaluran {
|
||||
return penyaluranBantuan?['deskripsi'] ?? 'Tidak ada deskripsi';
|
||||
}
|
||||
|
||||
// Getter untuk mendapatkan jenis bantuan
|
||||
String get jenisBantuan {
|
||||
return stokBantuan?['kategori_bantuan']?['nama'] ?? 'Tidak diketahui';
|
||||
}
|
||||
|
||||
// Getter untuk mendapatkan jumlah bantuan yang diterima
|
||||
String get jumlahBantuan {
|
||||
final jumlah = penerimaPenyaluran?['jumlah_bantuan'];
|
||||
final satuan = penerimaPenyaluran?['satuan'] ?? '';
|
||||
|
||||
if (jumlah == null) return 'Tidak diketahui';
|
||||
return '$jumlah $satuan';
|
||||
}
|
||||
}
|
||||
|
@ -5,22 +5,46 @@ class TindakanPengaduanModel {
|
||||
final String? pengaduanId;
|
||||
final String? tindakan;
|
||||
final String? catatan;
|
||||
final String? status;
|
||||
final String? statusTindakan; // PROSES, SELESAI
|
||||
final String? prioritas; // RENDAH, SEDANG, TINGGI
|
||||
final String? kategoriTindakan; // Kategori tindakan enum
|
||||
final String? petugasId;
|
||||
final String? verifikatorId;
|
||||
final String? hasilTindakan;
|
||||
final List<dynamic>? buktiTindakan;
|
||||
final DateTime? estimasiSelesai;
|
||||
final DateTime? tanggalTindakan;
|
||||
final DateTime? tanggalVerifikasi;
|
||||
final DateTime? createdAt;
|
||||
final DateTime? updatedAt;
|
||||
final double? biayaTindakan;
|
||||
final String? feedbackWarga;
|
||||
final int? ratingWarga;
|
||||
final Map<String, dynamic>? petugas; // Data petugas yang melakukan tindakan
|
||||
final Map<String, dynamic>? verifikator; // Data petugas yang memverifikasi
|
||||
|
||||
TindakanPengaduanModel({
|
||||
this.id,
|
||||
this.pengaduanId,
|
||||
this.tindakan,
|
||||
this.catatan,
|
||||
this.status,
|
||||
this.statusTindakan,
|
||||
this.prioritas,
|
||||
this.kategoriTindakan,
|
||||
this.petugasId,
|
||||
this.verifikatorId,
|
||||
this.hasilTindakan,
|
||||
this.buktiTindakan,
|
||||
this.estimasiSelesai,
|
||||
this.tanggalTindakan,
|
||||
this.tanggalVerifikasi,
|
||||
this.createdAt,
|
||||
this.updatedAt,
|
||||
this.biayaTindakan,
|
||||
this.feedbackWarga,
|
||||
this.ratingWarga,
|
||||
this.petugas,
|
||||
this.verifikator,
|
||||
});
|
||||
|
||||
factory TindakanPengaduanModel.fromRawJson(String str) =>
|
||||
@ -34,17 +58,35 @@ class TindakanPengaduanModel {
|
||||
pengaduanId: json["pengaduan_id"],
|
||||
tindakan: json["tindakan"],
|
||||
catatan: json["catatan"],
|
||||
status: json["status"],
|
||||
statusTindakan: json["status_tindakan"],
|
||||
prioritas: json["prioritas"],
|
||||
kategoriTindakan: json["kategori_tindakan"],
|
||||
petugasId: json["petugas_id"],
|
||||
verifikatorId: json["verifikator_id"],
|
||||
hasilTindakan: json["hasil_tindakan"],
|
||||
buktiTindakan: json["bukti_tindakan"],
|
||||
estimasiSelesai: json["estimasi_selesai"] != null
|
||||
? DateTime.parse(json["estimasi_selesai"])
|
||||
: null,
|
||||
tanggalTindakan: json["tanggal_tindakan"] != null
|
||||
? DateTime.parse(json["tanggal_tindakan"])
|
||||
: null,
|
||||
tanggalVerifikasi: json["tanggal_verifikasi"] != null
|
||||
? DateTime.parse(json["tanggal_verifikasi"])
|
||||
: null,
|
||||
createdAt: json["created_at"] != null
|
||||
? DateTime.parse(json["created_at"])
|
||||
: null,
|
||||
updatedAt: json["updated_at"] != null
|
||||
? DateTime.parse(json["updated_at"])
|
||||
: null,
|
||||
biayaTindakan: json["biaya_tindakan"] != null
|
||||
? double.parse(json["biaya_tindakan"].toString())
|
||||
: null,
|
||||
feedbackWarga: json["feedback_warga"],
|
||||
ratingWarga: json["rating_warga"],
|
||||
petugas: json["petugas"],
|
||||
verifikator: json["verifikator"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
@ -52,10 +94,79 @@ class TindakanPengaduanModel {
|
||||
"pengaduan_id": pengaduanId,
|
||||
"tindakan": tindakan,
|
||||
"catatan": catatan,
|
||||
"status": status,
|
||||
"status_tindakan": statusTindakan,
|
||||
"prioritas": prioritas,
|
||||
"kategori_tindakan": kategoriTindakan,
|
||||
"petugas_id": petugasId,
|
||||
"verifikator_id": verifikatorId,
|
||||
"hasil_tindakan": hasilTindakan,
|
||||
"bukti_tindakan": buktiTindakan,
|
||||
"estimasi_selesai": estimasiSelesai?.toIso8601String(),
|
||||
"tanggal_tindakan": tanggalTindakan?.toIso8601String(),
|
||||
"tanggal_verifikasi": tanggalVerifikasi?.toIso8601String(),
|
||||
"created_at": createdAt?.toIso8601String(),
|
||||
"updated_at": updatedAt?.toIso8601String(),
|
||||
"biaya_tindakan": biayaTindakan,
|
||||
"feedback_warga": feedbackWarga,
|
||||
"rating_warga": ratingWarga,
|
||||
"petugas": petugas,
|
||||
"verifikator": verifikator,
|
||||
};
|
||||
|
||||
// Getter untuk mendapatkan nama petugas
|
||||
String get namaPetugas {
|
||||
if (petugas != null && petugas!['nama'] != null) {
|
||||
return petugas!['nama'];
|
||||
} else if (petugas != null && petugas!['name'] != null) {
|
||||
return petugas!['name'];
|
||||
}
|
||||
return 'Petugas';
|
||||
}
|
||||
|
||||
// Getter untuk mendapatkan nama verifikator
|
||||
String get namaVerifikator {
|
||||
if (verifikator != null && verifikator!['nama'] != null) {
|
||||
return verifikator!['nama'];
|
||||
} else if (verifikator != null && verifikator!['name'] != null) {
|
||||
return verifikator!['name'];
|
||||
}
|
||||
return 'Belum diverifikasi';
|
||||
}
|
||||
|
||||
// Getter untuk mendapatkan status tindakan yang lebih user-friendly
|
||||
String get statusTindakanText {
|
||||
switch (statusTindakan) {
|
||||
case 'PROSES':
|
||||
return 'Dalam Proses';
|
||||
case 'SELESAI':
|
||||
return 'Selesai';
|
||||
default:
|
||||
return statusTindakan ?? 'Tidak Diketahui';
|
||||
}
|
||||
}
|
||||
|
||||
// Getter untuk mendapatkan prioritas yang lebih user-friendly
|
||||
String get prioritasText {
|
||||
switch (prioritas) {
|
||||
case 'RENDAH':
|
||||
return 'Prioritas Rendah';
|
||||
case 'SEDANG':
|
||||
return 'Prioritas Sedang';
|
||||
case 'TINGGI':
|
||||
return 'Prioritas Tinggi';
|
||||
default:
|
||||
return prioritas ?? 'Tidak Diketahui';
|
||||
}
|
||||
}
|
||||
|
||||
// Getter untuk mendapatkan kategori tindakan yang lebih user-friendly
|
||||
String get kategoriTindakanText {
|
||||
if (kategoriTindakan == null) return 'Tidak Diketahui';
|
||||
|
||||
// Mengubah format SNAKE_CASE menjadi Title Case
|
||||
return kategoriTindakan!
|
||||
.split('_')
|
||||
.map((word) => word[0].toUpperCase() + word.substring(1).toLowerCase())
|
||||
.join(' ');
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user