93 lines
2.9 KiB
Dart
93 lines
2.9 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:workouttest_util/model/exercise.dart';
|
|
import 'package:workouttest_util/model/exercise_type.dart';
|
|
import 'package:workouttest_util/util/logging.dart';
|
|
|
|
enum ExercisePlanDetailState { start, inProgress, skipped, finished, extra }
|
|
|
|
extension ExericisePlanDetailStateExt on ExercisePlanDetailState {
|
|
bool equalsTo(ExercisePlanDetailState state) => toString() == state.toString();
|
|
bool equalsStringTo(String state) => toString() == state;
|
|
String toStr() => toString().split(".").last;
|
|
}
|
|
|
|
class ExercisePlanDetail with Logging {
|
|
int? exercisePlanDetailId;
|
|
int? exercisePlanId;
|
|
late int exerciseTypeId;
|
|
int? serie;
|
|
int? repeats;
|
|
String? weightEquation;
|
|
|
|
/// List<Exercise>
|
|
List<Exercise>? exercises;
|
|
|
|
/// bool finished
|
|
bool? finished;
|
|
ExercisePlanDetailState state = ExercisePlanDetailState.start;
|
|
|
|
ExerciseType? exerciseType;
|
|
|
|
String? change; // 1: update -1:delete 0: new
|
|
|
|
ExercisePlanDetail(int exerciseTypeId) {
|
|
exerciseTypeId = exerciseTypeId;
|
|
}
|
|
|
|
ExercisePlanDetail.fromJson(Map json) {
|
|
exercisePlanDetailId = json['exercisePlanDetailId'];
|
|
exercisePlanId = json['exercisePlanId'];
|
|
exerciseTypeId = json['exerciseTypeId'];
|
|
serie = json['serie'];
|
|
repeats = json['repeats'];
|
|
weightEquation = json['weightEquation'];
|
|
}
|
|
|
|
ExercisePlanDetail.fromJsonWithExerciseList(Map json) {
|
|
exercisePlanDetailId = json['exercisePlanDetailId'];
|
|
exercisePlanId = json['exercisePlanId'];
|
|
exerciseTypeId = json['exerciseTypeId'];
|
|
serie = json['serie'];
|
|
repeats = json['repeats'];
|
|
weightEquation = json['weightEquation'];
|
|
try {
|
|
final String exercises = json['exercises'];
|
|
String jsonExercises = exercises.replaceAllMapped(
|
|
RegExp(r'([a-zA-Z]+|[0-9]{4}\-[0-9]{2}\-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2})'), (Match m) => "\"${m[0]}\"");
|
|
|
|
jsonExercises = jsonExercises.replaceAll(r'\"null\"', 'null');
|
|
|
|
//print("Exercises $jsonExercises");
|
|
Iterable iterable = jsonDecode(jsonExercises);
|
|
this.exercises = iterable.map((exercise) => Exercise.fromJson(exercise)).toList();
|
|
} on Exception catch (e) {
|
|
log("JsonDecode error $e");
|
|
}
|
|
}
|
|
|
|
Map<String, dynamic> toJson() => {
|
|
"exercisePlanId": exercisePlanId ?? 0,
|
|
"exerciseTypeId": exerciseTypeId,
|
|
"serie": serie,
|
|
"repeats": repeats,
|
|
"weightEquation": weightEquation
|
|
};
|
|
|
|
Map<String, dynamic> toJsonWithExerciseList() => {
|
|
"exercisePlanDetailId": exercisePlanDetailId,
|
|
"exercisePlanId": exercisePlanId,
|
|
"exerciseTypeId": exerciseTypeId,
|
|
"serie": serie,
|
|
"repeats": repeats,
|
|
"weightEquation": weightEquation,
|
|
'exercises': exercises == null ? [].toString() : exercises!.map((exercise) => exercise.toJson()).toList().toString(),
|
|
};
|
|
|
|
@override
|
|
String toString() {
|
|
Map<String, dynamic> json = toJsonWithExerciseList();
|
|
return json.toString();
|
|
}
|
|
}
|