Example #1
0
        private async Task <ObservableCollection <RoutineItem> > GetRoutine(DateTime date)
        {
            var collection = new ObservableCollection <RoutineItem>();
            var list       = await _routineDaysRepository.GetRoutine(date);

            var exercises = await _exercisesRepository.AllAsync();

            var workouts = await _workoutsRepository.GetWorkouts(date);

            foreach (var day in list)
            {
                // we shouldn't have days without an Exercise but we might have them because of an older fixed bug
                if (day.ExerciseId == 0)
                {
                    continue;
                }

                var vm = new RoutineItem
                {
                    RoutineDay = day,
                    Exercise   = exercises.FirstOrDefault(x => x.ExerciseId == day.ExerciseId),
                    Workout    = workouts.FirstOrDefault(x => x.ExerciseId == day.ExerciseId),
                };

                var previousWorkout = await _workoutsRepository.GetPreviousWorkout(vm.Exercise.ExerciseId, date);

                if (previousWorkout != null)
                {
                    vm.PreviousReps   = previousWorkout.Reps;
                    vm.PreviousWeight = previousWorkout.Weight;
                }

                var targetWorkout = await _workoutRules.GetTargetWorkout(vm.Exercise, previousWorkout);

                if (!targetWorkout.Equals(default(KeyValuePair <int, double>)))
                {
                    vm.TargetReps   = targetWorkout.Key;
                    vm.TargetWeight = targetWorkout.Value;
                }

                collection.Add(vm);
            }

            return(collection);
        }
Example #2
0
        public async Task OnNavigatedTo(NavigationParameters parameters)
        {
            if (parameters.ContainsKey("Title"))
            {
                Title = (string)parameters["Title"];
            }
            if (parameters.ContainsKey("Exercise"))
            {
                var exercise = parameters["Exercise"] as Exercise;

                if (exercise != null)
                {
                    ExerciseId  = exercise.ExerciseId;
                    Name        = exercise.Name;
                    Notes       = exercise.Notes;
                    PlateWeight = _units.GetWeight(App.Settings.IsMetric, exercise.PlateWeight);
                }
            }

            // make sure we have all days
            Days = await _routineDaysRepository.GetRoutine(ExerciseId);

            for (var i = 0; i <= 6; i++)
            {
                var day = Days.FirstOrDefault(x => x.DayOfWeek == i);
                if (day == null)
                {
                    day = new RoutineDay
                    {
                        DayOfWeek  = i,
                        ExerciseId = ExerciseId,
                        IsActive   = 0,
                        RowNumber  = 1
                    };
                    Days.Add(day);
                }
            }
        }