NIM_E31222534/Androidnya/lib/models/stunting_model.dart

79 lines
2.3 KiB
Dart

class StuntingData {
final int? id;
final int anakId;
final int? perkembanganId;
final DateTime tanggalPemeriksaan;
final String usia;
final double tinggiBadan;
final double beratBadan;
final String status;
final String? catatan;
final String? gender;
final String? namaPasien;
final double? lingkarKepala;
StuntingData({
this.id,
required this.anakId,
this.perkembanganId,
required this.tanggalPemeriksaan,
required this.usia,
required this.tinggiBadan,
required this.beratBadan,
required this.status,
this.catatan,
this.gender,
this.namaPasien,
this.lingkarKepala,
});
factory StuntingData.fromJson(Map<String, dynamic> json) {
// Helper untuk parsing integer yang bisa berupa string atau int
int? parseIntValue(dynamic value) {
if (value == null) return null;
if (value is int) return value;
if (value is String) {
try {
return int.parse(value);
} catch (e) {
print('Error parsing int value: $e');
return null;
}
}
return null;
}
return StuntingData(
id: parseIntValue(json['id']),
anakId: parseIntValue(json['anak_id']) ?? 0,
perkembanganId: parseIntValue(json['perkembangan_id']),
tanggalPemeriksaan: json['tanggal'] != null ? DateTime.parse(json['tanggal']) : DateTime.now(),
usia: json['usia'] ?? '',
tinggiBadan: json['tinggi_badan'] != null ? double.parse(json['tinggi_badan'].toString()) : 0.0,
beratBadan: json['berat_badan'] != null ? double.parse(json['berat_badan'].toString()) : 0.0,
status: json['status'] ?? 'Normal',
catatan: json['catatan'],
gender: json['gender'] ?? 'L',
namaPasien: json['nama_pasien'] ?? json['nama_anak'],
lingkarKepala: json['lingkar_kepala'] != null ? double.parse(json['lingkar_kepala'].toString()) : null,
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'anak_id': anakId,
'perkembangan_id': perkembanganId,
'tanggal': tanggalPemeriksaan.toIso8601String().split('T')[0],
'usia': usia,
'tinggi_badan': tinggiBadan,
'berat_badan': beratBadan,
'status': status,
'catatan': catatan,
'gender': gender,
'nama_pasien': namaPasien,
'lingkar_kepala': lingkarKepala,
};
}
}