workouttest_app/lib/repository/evaluation_repository.dart

77 lines
2.3 KiB
Dart

import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/model/customer.dart';
import 'package:aitrainer_app/model/evaluation.dart';
import 'package:aitrainer_app/model/evaluation_attribute.dart';
import 'package:aitrainer_app/util/enums.dart';
import 'package:flutter/material.dart';
class EvaluationRepository {
List<Evaluation>? evaluations;
EvaluationRepository() {
evaluations = Cache().evaluations;
}
String getEvaluationTextByExerciseType(int exerciseTypeId, double value) {
String? eval;
Evaluation? evaluation = this.getEvaluationByExerciseTypeId(exerciseTypeId);
Customer? customer = Cache().userLoggedIn;
if (evaluation != null && customer != null) {
int? age = customer.age;
if (age != null) {
for (var attribute in evaluation.attributes) {
EvaluationAttribute attr = attribute as EvaluationAttribute;
if (age >= attr.ageMin && age <= attr.ageMax && value >= attr.valueMin && value <= attr.valueMax) {
eval = attr.evaluationText;
break;
}
}
}
}
if (eval == null) {
eval = EvaluationText.fair.toStr();
}
return eval;
}
Evaluation? getEvaluationByExerciseTypeId(int exerciseTypeId) {
Evaluation? eval;
if (evaluations != null) {
for (var evaluation in evaluations!) {
if (evaluation.exerciseTypeId == exerciseTypeId) {
eval = evaluation;
break;
}
}
}
return eval;
}
Color getEvaluationColor(String eval) {
Color color = Colors.yellow[100]!;
if (EvaluationText.very_poor.equalsStringTo(eval)) {
return Colors.red[800]!;
} else if (EvaluationText.poor.equalsStringTo(eval)) {
return Colors.red[400]!;
} else if (EvaluationText.below_average.equalsStringTo(eval)) {
return Colors.orange[600]!;
} else if (EvaluationText.average.equalsStringTo(eval)) {
return Colors.yellow[600]!;
} else if (EvaluationText.above_average.equalsStringTo(eval)) {
return Colors.greenAccent;
} else if (EvaluationText.good.equalsStringTo(eval)) {
return Colors.green[400]!;
} else if (EvaluationText.excellent.equalsStringTo(eval)) {
return Colors.green[600]!;
} else if (EvaluationText.elite.equalsStringTo(eval)) {
return Colors.green[800]!;
}
return color;
}
}