class TrainingPlanModel { String id; String name; List sections; TrainingPlanModel({ required this.id, required this.name, required this.sections, }); factory TrainingPlanModel.fromJson(Map json) { return TrainingPlanModel( id: json['id'] ?? '', name: json['name'] ?? '', sections: (json['sections'] as List?) ?.map((e) => TrainingSectionModel.fromJson(e)) .toList() ?? [], ); } Map toJson() { return { 'id': id, 'name': name, 'sections': sections.map((e) => e.toJson()).toList(), }; } } class TrainingSectionModel { String id; String name; List exercises; TrainingSectionModel({ required this.id, required this.name, required this.exercises, }); factory TrainingSectionModel.fromJson(Map json) { return TrainingSectionModel( id: json['id'] ?? '', name: json['name'] ?? '', exercises: (json['exercises'] as List?) ?.map((e) => TrainingExerciseModel.fromJson(e)) .toList() ?? [], ); } Map toJson() { return { 'id': id, 'name': name, 'exercises': exercises.map((e) => e.toJson()).toList(), }; } } class TrainingExerciseModel { String instanceId; String exerciseId; String name; int sets; int value; // Reps or Seconds bool isTime; int rest; TrainingExerciseModel({ required this.instanceId, required this.exerciseId, required this.name, required this.sets, required this.value, required this.isTime, required this.rest, }); factory TrainingExerciseModel.fromJson(Map json) { return TrainingExerciseModel( instanceId: json['instanceId'] ?? '', exerciseId: json['exerciseId'] ?? '', name: json['name'] ?? '', sets: json['sets'] ?? 3, value: json['value'] ?? 10, isTime: json['isTime'] ?? false, rest: json['rest'] ?? 60, ); } Map toJson() { return { 'instanceId': instanceId, 'exerciseId': exerciseId, 'name': name, 'sets': sets, 'value': value, 'isTime': isTime, 'rest': rest, }; } }