import 'dart:collection'; import 'package:workouttest_util/model/training_plan_detail.dart'; class TrainingPlan { late int trainingPlanId; String? type; late String name; String? internalName; String? description; late bool free; late bool active; int? treeId; HashMap<String, String> nameTranslations = HashMap(); HashMap<String, String> descriptionTranslations = HashMap(); List<TrainingPlanDetail>? details; TrainingPlan.fromJson(Map<String, dynamic> json) { trainingPlanId = json['trainingPlanId']; name = json['name']; type = json['type'] ?? ""; internalName = json['internalName'] ?? ""; description = json['description'] ?? ""; free = json['free']; active = json['active']; treeId = json['treeId']; nameTranslations['en'] = name; descriptionTranslations['en'] = description ?? ""; if (json['translations'] != null && json['translations'].length > 0) { json['translations'].forEach((translation) { nameTranslations[translation['languageCode']] = translation['nameTranslation']; descriptionTranslations[translation['languageCode']] = translation['descriptionTranslation']; }); } if (json['details'] != null && json['details'].length > 0) { details = json['details'].map<TrainingPlanDetail>((detail) => TrainingPlanDetail.fromJson(detail)).toList(); if (details != null && details!.isNotEmpty) { details!.sort((a, b) { if (a.sort == 0 || b.sort == 0) { if (a.trainingPlanDetailId <= b.trainingPlanDetailId) { return -1; } else { return 1; } } if (a.sort <= b.sort) { return -1; } else { return 1; } }); } } } Map<String, dynamic> toJson() => { "trainingPlanId": trainingPlanId, "treeId": treeId, "name": name, "type": type, "internalName": internalName, "free": free, "active": active, "description": description, "nameTranslation": nameTranslations.toString(), }; @override String toString() => toJson().toString(); }