import 'package:workouttest_util/model/cache.dart'; import 'package:workouttest_util/model/exercise.dart'; import 'package:workouttest_util/model/exercise_plan_detail.dart'; import 'package:workouttest_util/model/exercise_type.dart'; import 'package:workouttest_util/repository/training_plan_day_repository.dart'; class CustomerTrainingPlanDetails { /// customerTrainingPlanDetails int? customerTrainingPlanDetailsId; /// trainingPlanDetailsId int? trainingPlanDetailsId; /// exerciseTypeId int? exerciseTypeId; /// set int? set; /// repeats int? repeats; /// weight double? weight; int? restingTime; bool? parallel; String? day; int? dayId; /// exerciseType ExerciseType? exerciseType; ExercisePlanDetailState state = ExercisePlanDetailState.start; List exercises = []; bool isTest = false; double baseOneRepMax = -1; List alternatives = []; CustomerTrainingPlanDetails(); CustomerTrainingPlanDetails.fromJson(Map json) { this.customerTrainingPlanDetailsId = json['customerTrainingPlanDetailsId']; this.exerciseTypeId = json['exerciseTypeId']; this.set = json['set']; this.repeats = json['repeats']; this.weight = json['weight']; this.restingTime = json['restingTime']; this.parallel = json['parallel']; this.day = json['day']; } CustomerTrainingPlanDetails.fromJsonWithExerciseList(Map json) { this.customerTrainingPlanDetailsId = json['customerTrainingPlanDetailsId'] == "null" || json['customerTrainingPlanDetailsId'] == null ? 0 : json['customerTrainingPlanDetailsId']; this.trainingPlanDetailsId = json['trainingPlanDetailsId'] == "null" ? 0 : json['trainingPlanDetailsId']; this.exerciseTypeId = json['exerciseTypeId']; this.set = json['set']; this.repeats = json['repeats'] == "null" ? -1 : json['repeats']; this.weight = json['weight'] == "null" ? 0 : json['weight']; this.restingTime = json['restingTime']; this.parallel = json['parallel'] == "false" ? false : json['parallel'] == "true" ? true : null; this.dayId = json['dayId'] == "null" ? null : json['dayId']; TrainingPlanDayRepository trainingPlanDayRepository = TrainingPlanDayRepository(); this.day = trainingPlanDayRepository.getNameById(this.dayId); try { Iterable iterable = json['exercises']; this.exercises = iterable.map((exercise) => Exercise.fromJson(exercise)).toList(); } on Exception catch (e) { print("JsonDecode error " + e.toString()); } if (json['state'] == ExercisePlanDetailState.finished.toStr()) { this.state = ExercisePlanDetailState.finished; } else if (json['state'] == ExercisePlanDetailState.inProgress.toStr()) { this.state = ExercisePlanDetailState.inProgress; } else if (json['state'] == ExercisePlanDetailState.skipped.toStr()) { this.state = ExercisePlanDetailState.skipped; } else { this.state = ExercisePlanDetailState.start; } this.isTest = json['isTest'] == "true" ? true : false; this.exerciseType = Cache().getExerciseTypeById(exerciseTypeId!); this.baseOneRepMax = json['baseOneRepMax'] == null ? 0 : json['baseOneRepMax']; } ExerciseType? getExerciseType() => exerciseType; Map toJson() => { "customerTrainingPlanDetailsId": this.customerTrainingPlanDetailsId, "exerciseTypeId": this.exerciseTypeId, "set": this.set, "repeats": this.repeats, "weight": this.weight, "restingTime": this.restingTime, "parallel": this.parallel, "day": this.day == null ? '1.' : this.day, }; Map toJsonWithExercises() { final Map jsonMap = { "customerTrainingPlanDetailsId": this.customerTrainingPlanDetailsId, "trainingPlanDetailsId": this.trainingPlanDetailsId, "exerciseTypeId": this.exerciseTypeId, "set": this.set, "repeats": this.repeats, "weight": this.weight, "restingTime": this.restingTime, "parallel": this.parallel, 'exercises': exercises.isEmpty ? [].toString() : exercises.map((exercise) => exercise.toJson()).toList().toString(), 'state': this.state.toStr(), "isTest": this.isTest, "dayId": this.dayId, "baseOneRepMax": this.baseOneRepMax, }; //print("Detail toJson $jsonMap"); return jsonMap; } @override String toString() => this.toJsonWithExercises().toString(); void copy(CustomerTrainingPlanDetails from) { this.customerTrainingPlanDetailsId = from.customerTrainingPlanDetailsId; this.trainingPlanDetailsId = from.trainingPlanDetailsId; this.exerciseTypeId = from.exerciseTypeId; this.exerciseType = from.exerciseType; this.set = from.set; this.repeats = from.repeats; this.weight = from.weight; this.restingTime = from.restingTime; this.parallel = from.parallel; this.exercises = from.exercises; this.state = from.state; this.isTest = from.isTest; this.day = from.day; this.dayId = from.dayId; this.baseOneRepMax = from.baseOneRepMax; if (from.exercises.length == 0) { this.exercises = []; } if (from.alternatives.length > 0) { from.alternatives.forEach((alternative) { this.alternatives.add(alternative); }); } } }