MIF_E31231313/Android/flutter_app/lib/models/api_result_model.dart

163 lines
4.1 KiB
Dart

class ApiResultModel {
const ApiResultModel({
required this.identitas,
required this.zScore,
required this.kategori,
required this.statusGabungan,
required this.rekomendasi,
this.measurement,
});
final IdentitasModel identitas;
final ZScoreModel zScore;
final KategoriModel kategori;
final String statusGabungan;
final List<RekomendasiModel> rekomendasi;
final AnalysisMeasurementModel? measurement;
factory ApiResultModel.fromJson(Map<String, dynamic> json) {
return ApiResultModel(
identitas: IdentitasModel.fromJson(
json['identitas'] as Map<String, dynamic>? ?? const {},
),
zScore: ZScoreModel.fromJson(
json['zscore'] as Map<String, dynamic>? ?? const {},
),
kategori: KategoriModel.fromJson(
json['kategori'] as Map<String, dynamic>? ?? const {},
),
statusGabungan: json['status_gabungan'] as String? ?? '-',
rekomendasi: (json['rekomendasi'] as List<dynamic>? ?? const [])
.whereType<Map<String, dynamic>>()
.map(RekomendasiModel.fromJson)
.toList(),
measurement: json['measurement'] is Map<String, dynamic>
? AnalysisMeasurementModel.fromJson(
json['measurement'] as Map<String, dynamic>,
)
: null,
);
}
}
class AnalysisMeasurementModel {
const AnalysisMeasurementModel({
required this.id,
required this.childId,
required this.childName,
required this.tanggalUkur,
required this.caraUkur,
});
final int id;
final int childId;
final String childName;
final String tanggalUkur;
final String? caraUkur;
factory AnalysisMeasurementModel.fromJson(Map<String, dynamic> json) {
return AnalysisMeasurementModel(
id: (json['id'] as num?)?.toInt() ?? 0,
childId: (json['child_id'] as num?)?.toInt() ?? 0,
childName: json['child_name'] as String? ?? '-',
tanggalUkur: json['tanggal_ukur'] as String? ?? '-',
caraUkur: json['cara_ukur'] as String?,
);
}
}
class IdentitasModel {
const IdentitasModel({required this.umurBulan, required this.jenisKelamin});
final double umurBulan;
final String jenisKelamin;
factory IdentitasModel.fromJson(Map<String, dynamic> json) {
double parseNum(dynamic v) {
if (v is num) return v.toDouble();
return double.nan;
}
return IdentitasModel(
umurBulan: parseNum(json['umur_bulan']),
jenisKelamin: json['jenis_kelamin'] as String? ?? '-',
);
}
}
class ZScoreModel {
const ZScoreModel({required this.bbu, required this.tbu, required this.bbtb});
final double bbu;
final double tbu;
final double bbtb;
factory ZScoreModel.fromJson(Map<String, dynamic> json) {
double parseNum(dynamic v) {
if (v is num) return v.toDouble();
return double.nan;
}
return ZScoreModel(
bbu: parseNum(json['bbu']),
tbu: parseNum(json['tbu']),
bbtb: parseNum(json['bbtb']),
);
}
}
class KategoriModel {
const KategoriModel({
required this.bbu,
required this.tbu,
required this.bbtb,
});
final String bbu;
final String tbu;
final String bbtb;
factory KategoriModel.fromJson(Map<String, dynamic> json) {
return KategoriModel(
bbu: json['bbu'] as String? ?? '-',
tbu: json['tbu'] as String? ?? '-',
bbtb: json['bbtb'] as String? ?? '-',
);
}
}
class RekomendasiModel {
const RekomendasiModel({
required this.menu,
required this.kalori,
required this.protein,
required this.lemak,
required this.karbohidrat,
required this.alasan,
});
final String menu;
final int kalori;
final int protein;
final int lemak;
final int karbohidrat;
final String alasan;
factory RekomendasiModel.fromJson(Map<String, dynamic> json) {
int parseInt(dynamic v) {
if (v is int) return v;
if (v is num) return v.toInt();
return 0;
}
return RekomendasiModel(
menu: json['menu'] as String? ?? '-',
kalori: parseInt(json['kalori']),
protein: parseInt(json['protein']),
lemak: parseInt(json['lemak']),
karbohidrat: parseInt(json['karbohidrat']),
alasan: json['alasan'] as String? ?? '-',
);
}
}