import 'consultation_model.dart'; import 'notification_model.dart'; import 'nutritionist_profile_model.dart'; class DashboardSummaryModel { const DashboardSummaryModel({ required this.activeConsultations, required this.unrepliedMessages, required this.highRiskConsultations, required this.needReviewData, }); final int activeConsultations; final int unrepliedMessages; final int highRiskConsultations; final int needReviewData; factory DashboardSummaryModel.fromJson(Map json) { return DashboardSummaryModel( activeConsultations: _int(json['active_consultations']), unrepliedMessages: _int(json['unreplied_messages'] ?? json['unanswered']), highRiskConsultations: _int( json['high_risk_consultations'] ?? json['risk_children'], ), needReviewData: _int(json['need_review_data'] ?? json['anomaly_data']), ); } Map toJson() => { 'active_consultations': activeConsultations, 'unreplied_messages': unrepliedMessages, 'high_risk_consultations': highRiskConsultations, 'need_review_data': needReviewData, }; } class DashboardNutritionistModel { const DashboardNutritionistModel({ required this.nutritionist, required this.summary, required this.latestConsultations, required this.latestNotifications, }); final NutritionistProfileModel nutritionist; final DashboardSummaryModel summary; final List latestConsultations; final List latestNotifications; factory DashboardNutritionistModel.fromJson(Map json) { final data = json['data'] is Map ? json['data'] as Map : json; return DashboardNutritionistModel( nutritionist: NutritionistProfileModel.fromJson( data['nutritionist'] is Map ? data['nutritionist'] as Map : data['profile'] is Map ? data['profile'] as Map : const {}, ), summary: DashboardSummaryModel.fromJson( data['summary'] is Map ? data['summary'] as Map : data['stats'] is Map ? data['stats'] as Map : const {}, ), latestConsultations: ((data['latest_consultations'] ?? data['rooms']) as List? ?? const []) .whereType>() .map(ConsultationModel.fromJson) .toList(), latestNotifications: ((data['latest_notifications'] ?? data['activities']) as List? ?? const []) .whereType>() .map(NotificationModel.fromJson) .toList(), ); } Map toJson() => { 'nutritionist': nutritionist.toJson(), 'summary': summary.toJson(), 'latest_consultations': latestConsultations.map((e) => e.toJson()).toList(), 'latest_notifications': latestNotifications.map((e) => e.toJson()).toList(), }; } int _int(dynamic value) { if (value is num) return value.toInt(); if (value is String) return int.tryParse(value) ?? 0; return 0; }