import 'dart:convert'; class TindakanPengaduanModel { final String? id; final String? pengaduanId; final String? tindakan; final String? catatan; final String? statusTindakan; // PROSES, SELESAI final String? kategoriTindakan; // Kategori tindakan enum final String? petugasId; final String? verifikatorId; final String? hasilTindakan; final List? buktiTindakan; final DateTime? estimasiSelesai; final DateTime? tanggalTindakan; final DateTime? tanggalVerifikasi; final DateTime? createdAt; final DateTime? updatedAt; final double? biayaTindakan; final Map? petugas; // Data petugas yang melakukan tindakan final Map? verifikator; // Data petugas yang memverifikasi TindakanPengaduanModel({ this.id, this.pengaduanId, this.tindakan, this.catatan, this.statusTindakan, this.kategoriTindakan, this.petugasId, this.verifikatorId, this.hasilTindakan, this.buktiTindakan, this.estimasiSelesai, this.tanggalTindakan, this.tanggalVerifikasi, this.createdAt, this.updatedAt, this.biayaTindakan, this.petugas, this.verifikator, }); factory TindakanPengaduanModel.fromRawJson(String str) => TindakanPengaduanModel.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TindakanPengaduanModel.fromJson(Map json) => TindakanPengaduanModel( id: json["id"], pengaduanId: json["pengaduan_id"], tindakan: json["tindakan"], catatan: json["catatan"], statusTindakan: json["status_tindakan"], 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"]?.toDouble(), petugas: json["petugas"], verifikator: json["verifikator"], ); Map toJson() => { "id": id, "pengaduan_id": pengaduanId, "tindakan": tindakan, "catatan": catatan, "status_tindakan": statusTindakan, "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, "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 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(' '); } }