183 lines
5.9 KiB
Dart
183 lines
5.9 KiB
Dart
import 'dart:convert';
|
|
|
|
class PenyaluranBantuanModel {
|
|
final String? id;
|
|
final String? nama;
|
|
final String? deskripsi;
|
|
final String? lokasiPenyaluranId;
|
|
final String? petugasId;
|
|
final String? status;
|
|
final String? alasanPembatalan;
|
|
final DateTime? tanggalPenyaluran;
|
|
final String? kategoriBantuanId;
|
|
final DateTime? tanggalPembatalan;
|
|
final int? jumlahPenerima;
|
|
final String? skemaId;
|
|
final DateTime? tanggalSelesai;
|
|
final DateTime? createdAt;
|
|
final DateTime? updatedAt;
|
|
final Map<String, dynamic>? lokasiPenyaluran;
|
|
final Map<String, dynamic>? kategori;
|
|
final Map<String, dynamic>? petugas;
|
|
final int? jumlahBantuan;
|
|
|
|
PenyaluranBantuanModel({
|
|
this.id,
|
|
this.nama,
|
|
this.deskripsi,
|
|
this.lokasiPenyaluranId,
|
|
this.petugasId,
|
|
this.status,
|
|
this.alasanPembatalan,
|
|
this.tanggalPenyaluran,
|
|
this.kategoriBantuanId,
|
|
this.tanggalPembatalan,
|
|
this.jumlahPenerima,
|
|
this.skemaId,
|
|
this.tanggalSelesai,
|
|
this.createdAt,
|
|
this.updatedAt,
|
|
this.lokasiPenyaluran,
|
|
this.kategori,
|
|
this.petugas,
|
|
this.jumlahBantuan,
|
|
});
|
|
|
|
// Mendapatkan nama lokasi dari relasi lokasiPenyaluran
|
|
String? get lokasiNama {
|
|
if (lokasiPenyaluran != null && lokasiPenyaluran!['nama'] != null) {
|
|
return lokasiPenyaluran!['nama'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Mendapatkan nama kategori dari relasi kategori
|
|
String? get kategoriNama {
|
|
if (kategori != null && kategori!['nama'] != null) {
|
|
return kategori!['nama'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Mendapatkan nama petugas dari relasi petugas
|
|
String? get namaPetugas {
|
|
if (petugas != null) {
|
|
if (petugas!['nama_lengkap'] != null) {
|
|
return petugas!['nama_lengkap'];
|
|
} else if (petugas!['nama'] != null) {
|
|
return petugas!['nama'];
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Mendapatkan foto petugas dari relasi petugas
|
|
String? get fotoPetugas {
|
|
if (petugas != null && petugas!['foto_profil'] != null) {
|
|
return petugas!['foto_profil'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
factory PenyaluranBantuanModel.fromRawJson(String str) =>
|
|
PenyaluranBantuanModel.fromJson(json.decode(str));
|
|
|
|
String toRawJson() => json.encode(toJson());
|
|
|
|
factory PenyaluranBantuanModel.fromJson(Map<String, dynamic> json) =>
|
|
PenyaluranBantuanModel(
|
|
id: json["id"],
|
|
nama: json["nama"],
|
|
deskripsi: json["deskripsi"],
|
|
lokasiPenyaluranId: json["lokasi_penyaluran_id"],
|
|
petugasId: json["petugas_id"],
|
|
status: json["status"],
|
|
alasanPembatalan: json["alasan_pembatalan"],
|
|
tanggalPenyaluran: json["tanggal_penyaluran"] != null
|
|
? DateTime.parse(json["tanggal_penyaluran"]).toUtc()
|
|
: null,
|
|
kategoriBantuanId: json["kategori_bantuan_id"],
|
|
tanggalPembatalan: json["tanggal_pembatalan"] != null
|
|
? DateTime.parse(json["tanggal_pembatalan"]).toUtc()
|
|
: null,
|
|
jumlahPenerima: json["jumlah_penerima"],
|
|
skemaId: json["skema_id"],
|
|
tanggalSelesai: json["tanggal_selesai"] != null
|
|
? DateTime.parse(json["tanggal_selesai"]).toUtc()
|
|
: null,
|
|
createdAt: json["created_at"] != null
|
|
? DateTime.parse(json["created_at"]).toUtc()
|
|
: null,
|
|
updatedAt: json["updated_at"] != null
|
|
? DateTime.parse(json["updated_at"]).toUtc()
|
|
: null,
|
|
lokasiPenyaluran: json["lokasi_penyaluran"],
|
|
kategori: json["kategori"],
|
|
petugas: json["petugas"],
|
|
jumlahBantuan: json["jumlah_bantuan"],
|
|
);
|
|
|
|
Map<String, dynamic> toJson() => {
|
|
"id": id,
|
|
"nama": nama,
|
|
"deskripsi": deskripsi,
|
|
"lokasi_penyaluran_id": lokasiPenyaluranId,
|
|
"petugas_id": petugasId,
|
|
"status": status,
|
|
"alasan_pembatalan": alasanPembatalan,
|
|
"tanggal_penyaluran": tanggalPenyaluran?.toUtc().toIso8601String(),
|
|
"kategori_bantuan_id": kategoriBantuanId,
|
|
"tanggal_pembatalan": tanggalPembatalan?.toUtc().toIso8601String(),
|
|
"jumlah_penerima": jumlahPenerima,
|
|
"skema_id": skemaId,
|
|
"tanggal_selesai": tanggalSelesai?.toUtc().toIso8601String(),
|
|
"created_at": createdAt?.toUtc().toIso8601String(),
|
|
"updated_at": updatedAt?.toUtc().toIso8601String(),
|
|
};
|
|
|
|
// Metode copyWith untuk membuat salinan objek dengan perubahan tertentu
|
|
PenyaluranBantuanModel copyWith({
|
|
String? id,
|
|
String? nama,
|
|
String? deskripsi,
|
|
String? petugasId,
|
|
String? skemaId,
|
|
String? lokasiPenyaluranId,
|
|
String? kategoriBantuanId,
|
|
int? jumlahPenerima,
|
|
DateTime? tanggalPenyaluran,
|
|
String? status,
|
|
String? alasanPembatalan,
|
|
DateTime? tanggalPembatalan,
|
|
DateTime? tanggalSelesai,
|
|
DateTime? createdAt,
|
|
DateTime? updatedAt,
|
|
Map<String, dynamic>? lokasiPenyaluran,
|
|
Map<String, dynamic>? kategori,
|
|
Map<String, dynamic>? petugas,
|
|
int? jumlahBantuan,
|
|
}) {
|
|
return PenyaluranBantuanModel(
|
|
id: id ?? this.id,
|
|
nama: nama ?? this.nama,
|
|
deskripsi: deskripsi ?? this.deskripsi,
|
|
petugasId: petugasId ?? this.petugasId,
|
|
skemaId: skemaId ?? this.skemaId,
|
|
lokasiPenyaluranId: lokasiPenyaluranId ?? this.lokasiPenyaluranId,
|
|
kategoriBantuanId: kategoriBantuanId ?? this.kategoriBantuanId,
|
|
jumlahPenerima: jumlahPenerima ?? this.jumlahPenerima,
|
|
tanggalPenyaluran: tanggalPenyaluran ?? this.tanggalPenyaluran,
|
|
status: status ?? this.status,
|
|
alasanPembatalan: alasanPembatalan ?? this.alasanPembatalan,
|
|
tanggalPembatalan: tanggalPembatalan ?? this.tanggalPembatalan,
|
|
tanggalSelesai: tanggalSelesai ?? this.tanggalSelesai,
|
|
createdAt: createdAt ?? this.createdAt,
|
|
updatedAt: updatedAt ?? this.updatedAt,
|
|
lokasiPenyaluran: lokasiPenyaluran ?? this.lokasiPenyaluran,
|
|
kategori: kategori ?? this.kategori,
|
|
petugas: petugas ?? this.petugas,
|
|
jumlahBantuan: jumlahBantuan ?? this.jumlahBantuan,
|
|
);
|
|
}
|
|
}
|