Files
penyaluran_app/lib/app/data/models/penyaluran_bantuan_model.dart
Khafidh Fuadi 5aaeb58d2b h-1 lebaran
2025-03-30 14:45:16 +07:00

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,
);
}
}