import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/model/exercise_result.dart';
import 'package:aitrainer_app/model/result.dart';

enum ResultType { running, man, woman, none }

extension ResultTypeExt on ResultType {
  bool equals(ResultType type) => this.toString() == type.toString();
}

class ExerciseResultRepository {
  final List<ResultExt> _results = List();
  ResultType resultType;

  ExerciseResultRepository({this.resultType}) {
    if (resultType == null) {
      resultType = ResultType.man;
    }
    if (resultType.equals(ResultType.man) || resultType.equals(ResultType.woman)) {
      //_results.add(ResultExt(itemString: ResultItem.time.description));
      _results.add(ResultExt(itemString: ResultItem.reps_volume.description));
      _results.add(ResultExt(itemString: ResultItem.weight_volume.description));
      _results.add(ResultExt(itemString: ResultItem.bpm_max.description));
      _results.add(ResultExt(itemString: ResultItem.calorie.description));
      _results.add(ResultExt(itemString: ResultItem.bpm_avg.description));
      _results.add(ResultExt(itemString: ResultItem.fatburn_percent.description));
      _results.add(ResultExt(itemString: ResultItem.bpm_min.description));
    } else {
      //_results.add(ResultExt(itemString: ResultItem.time.description));
      _results.add(ResultExt(itemString: ResultItem.distance.description));
      _results.add(ResultExt(itemString: ResultItem.bpm_max.description));
      _results.add(ResultExt(itemString: ResultItem.calorie.description));
      _results.add(ResultExt(itemString: ResultItem.bpm_avg.description));
      _results.add(ResultExt(itemString: ResultItem.fatburn_percent.description));
      _results.add(ResultExt(itemString: ResultItem.bpm_min.description));
      _results.add(ResultExt(itemString: ResultItem.steps.description));
      _results.add(ResultExt(itemString: ResultItem.speed_max.description));
    }
  }

  List<ResultExt> getResults() => this._results;

  Future<void> saveExerciseResults() async {
    if (this._results != null) {
      this._results.forEach((result) async {
        ExerciseResult exerciseResult = ExerciseResult();
        exerciseResult.customerId = Cache().userLoggedIn.customerId;
        exerciseResult.exerciseId = result.exerciseId;
        exerciseResult.dateFrom = result.dateFrom;
        exerciseResult.dateTo = result.dateTo;
        exerciseResult.resultType = result.itemString;
        exerciseResult.value = result.data;
        //await ExerciseResultApi().saveExerciseResult(exerciseResult);
      });
    }
  }
}