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 nameTranslations = HashMap(); HashMap descriptionTranslations = HashMap(); List? details; TrainingPlan.fromJson(Map json) { this.trainingPlanId = json['trainingPlanId']; this.name = json['name']; this.type = json['type']; this.internalName = json['internalName']; this.description = json['description']; this.free = json['free']; this.active = json['active']; this.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((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 toJson() => { "trainingPlanId": this.trainingPlanId, "treeId": this.treeId, "name": this.name, "type": this.type, "internalName": this.internalName, "free": this.free, "active": this.active, "description": this.description, "nameTranslation": this.nameTranslations.toString(), }; @override String toString() => this.toJson().toString(); }