workouttest_util/lib/model/customer_training_plan_details.dart
2023-02-12 22:42:51 +01:00

164 lines
4.9 KiB
Dart

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';
import 'package:workouttest_util/util/logging.dart';
class CustomerTrainingPlanDetails with Logging {
/// 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<Exercise> exercises = [];
bool isTest = false;
double baseOneRepMax = -1;
List<ExerciseType> alternatives = [];
CustomerTrainingPlanDetails();
CustomerTrainingPlanDetails.fromJson(Map json) {
customerTrainingPlanDetailsId = json['customerTrainingPlanDetailsId'];
exerciseTypeId = json['exerciseTypeId'];
set = json['set'];
repeats = json['repeats'];
weight = json['weight'];
restingTime = json['restingTime'];
parallel = json['parallel'];
day = json['day'];
}
CustomerTrainingPlanDetails.fromJsonWithExerciseList(Map json) {
customerTrainingPlanDetailsId = json['customerTrainingPlanDetailsId'] == "null" || json['customerTrainingPlanDetailsId'] == null
? 0
: json['customerTrainingPlanDetailsId'];
trainingPlanDetailsId = json['trainingPlanDetailsId'] == "null" ? 0 : json['trainingPlanDetailsId'];
exerciseTypeId = json['exerciseTypeId'];
set = json['set'];
repeats = json['repeats'] == "null" ? -1 : json['repeats'];
weight = json['weight'] == "null" ? 0 : json['weight'];
restingTime = json['restingTime'];
parallel = json['parallel'] == "false"
? false
: json['parallel'] == "true"
? true
: null;
dayId = json['dayId'] == "null" ? null : json['dayId'];
TrainingPlanDayRepository trainingPlanDayRepository = const TrainingPlanDayRepository();
day = trainingPlanDayRepository.getNameById(dayId);
try {
Iterable iterable = json['exercises'];
exercises = iterable.map((exercise) => Exercise.fromJson(exercise)).toList();
} on Exception catch (e) {
log("JsonDecode error $e");
}
if (json['state'] == ExercisePlanDetailState.finished.toStr()) {
state = ExercisePlanDetailState.finished;
} else if (json['state'] == ExercisePlanDetailState.inProgress.toStr()) {
state = ExercisePlanDetailState.inProgress;
} else if (json['state'] == ExercisePlanDetailState.skipped.toStr()) {
state = ExercisePlanDetailState.skipped;
} else {
state = ExercisePlanDetailState.start;
}
isTest = json['isTest'] == "true" ? true : false;
exerciseType = Cache().getExerciseTypeById(exerciseTypeId!);
baseOneRepMax = json['baseOneRepMax'] ?? 0;
}
ExerciseType? getExerciseType() => exerciseType;
Map<String, dynamic> toJson() => {
"customerTrainingPlanDetailsId": customerTrainingPlanDetailsId,
"exerciseTypeId": exerciseTypeId,
"set": set,
"repeats": repeats,
"weight": weight,
"restingTime": restingTime,
"parallel": parallel,
"day": day ?? '1.',
};
Map<String, dynamic> toJsonWithExercises() {
final Map<String, dynamic> jsonMap = {
"customerTrainingPlanDetailsId": customerTrainingPlanDetailsId,
"trainingPlanDetailsId": trainingPlanDetailsId,
"exerciseTypeId": exerciseTypeId,
"set": set,
"repeats": repeats,
"weight": weight,
"restingTime": restingTime,
"parallel": parallel,
'exercises': exercises.isEmpty ? [].toString() : exercises.map((exercise) => exercise.toJson()).toList().toString(),
'state': state.toStr(),
"isTest": isTest,
"dayId": dayId,
"baseOneRepMax": baseOneRepMax,
};
//print("Detail toJson $jsonMap");
return jsonMap;
}
@override
String toString() => toJsonWithExercises().toString();
void copy(CustomerTrainingPlanDetails from) {
customerTrainingPlanDetailsId = from.customerTrainingPlanDetailsId;
trainingPlanDetailsId = from.trainingPlanDetailsId;
exerciseTypeId = from.exerciseTypeId;
exerciseType = from.exerciseType;
set = from.set;
repeats = from.repeats;
weight = from.weight;
restingTime = from.restingTime;
parallel = from.parallel;
exercises = from.exercises;
state = from.state;
isTest = from.isTest;
day = from.day;
dayId = from.dayId;
baseOneRepMax = from.baseOneRepMax;
if (from.exercises.isEmpty) {
exercises = [];
}
if (from.alternatives.isNotEmpty) {
for (var alternative in from.alternatives) {
alternatives.add(alternative);
}
}
}
}