Beispiel #1
0
        public ActionResult CompleteSet([FromForm] SetViewModel setViewModel)
        {
            WorkoutSetResult workoutSetResult = new WorkoutSetResult();

            workoutSetResult.DateCreated      = DateTime.Now;
            workoutSetResult.Difficulty       = (int)setViewModel.Difficulty;
            workoutSetResult.Notes            = setViewModel.Notes;
            workoutSetResult.RepsCompleted    = setViewModel.RepsCompleted;
            workoutSetResult.Weight           = setViewModel.Weight;
            workoutSetResult.WorkoutSetId     = setViewModel.WorkoutSet.WorkoutSetId;
            workoutSetResult.WorkoutSessionId = setViewModel.WorkoutSessionId;
            workoutSetResult.Skipped          = setViewModel.Skipped;

            if (workoutSetResult.Skipped)
            {
                workoutSetResult.Difficulty    = 0;
                workoutSetResult.RepsCompleted = 0;
                workoutSetResult.Weight        = 0;
            }

            _context.WorkoutSetResult.Add(workoutSetResult);

            _context.SaveChanges();

            return(RedirectToAction("StartSet",
                                    new
            {
                workoutId = setViewModel.WorkoutId,
                workoutSetId = setViewModel.WorkoutSet.WorkoutSetId,
                lastSet = setViewModel.IsLastSet,
                currentExerciseId = setViewModel.Exercise.ExerciseId,
                workoutSessionId = setViewModel.WorkoutSessionId
            }));
        }
Beispiel #2
0
        public SetViewModel(WorkoutSetResult previousWorkoutSetResult)
        {
            if (previousWorkoutSetResult == null)
            {
                return;
            }

            Weight        = previousWorkoutSetResult.Weight == null ? 0 : (int)previousWorkoutSetResult.Weight;
            RepsCompleted = previousWorkoutSetResult.RepsCompleted == null ? 0 : (int)previousWorkoutSetResult.RepsCompleted;
            Difficulty    = previousWorkoutSetResult.Difficulty == null ? 0 : (Difficulty)previousWorkoutSetResult.Difficulty;
            Notes         = previousWorkoutSetResult.Notes;
        }
Beispiel #3
0
        public ActionResult StartSet([FromRoute] int workoutId, int workoutSetId, bool lastSet, int currentExerciseId, int workoutSessionId)
        {
            if (workoutSessionId == 0)
            {
                WorkoutSession workoutSession = new WorkoutSession {
                    DateCreated = DateTime.Now
                };

                _context.WorkoutSession.Add(workoutSession);

                _context.SaveChanges();

                workoutSessionId = workoutSession.WorkoutSessionId;
            }



            int exerciseId = 0;

            Exercise exercise = null;

            List <WorkoutToExercise> wtes = _context.WorkoutToExercise
                                            .Where(we => we.WorkoutId == workoutId && we.Active)
                                            .OrderBy(wte => wte.Order).ToList();

            List <Exercise> exercises = _context.Exercise
                                        .Where(e => wtes.Select(wte => wte.ExerciseId)
                                               .Contains(e.ExerciseId)).ToList();

            bool workoutComplete = false;

            if (workoutSetId == 0) //firstSet
            {
                exerciseId = wtes.OrderBy(x => x.Order).First().ExerciseId;
            }
            else if (lastSet) //last set -- need next exercise
            {
                int currentOrder = wtes.Where(wte => wte.ExerciseId == currentExerciseId).First().Order;

                WorkoutToExercise workoutToExercise = wtes.Where(wte => wte.Order == currentOrder + 1).FirstOrDefault();

                if (workoutToExercise == null)
                {
                    workoutComplete = true;
                }
                else
                {
                    exerciseId = wtes.Where(wte => wte.Order == currentOrder + 1).FirstOrDefault().ExerciseId;//is null posible here?
                }
            }
            else
            {
                exerciseId = currentExerciseId;
            }

            if (workoutComplete)
            {
                return(View("WorkoutComplete"));
            }

            exercise = exercises.Where(e => e.ExerciseId == exerciseId).Single();

            var workoutSets = _context.WorkoutSet
                              .Where(ws => ws.WorkoutId == workoutId && ws.ExerciseId == exerciseId && ws.Active)
                              .OrderBy(x => x.SetOrder).ToList();

            WorkoutSet currentWorkoutSet = null;

            bool nextSetIsLast = false;

            WorkoutSet nextWorkoutSet = null;

            SetViewModel setViewModel = null;

            WorkoutSetResult previousResult = null;

            if (workoutSetId == 0 || lastSet)
            {
                workoutSetId = workoutSets.Where(ws => ws.ExerciseId == exercise.ExerciseId).OrderBy(ws => ws.SetOrder).First().WorkoutSetId;

                nextWorkoutSet = workoutSets.Where(ws => ws.WorkoutSetId == workoutSetId).First();

                nextSetIsLast = nextWorkoutSet.SetOrder == workoutSets.Select(ws => ws.SetOrder).Max();

                previousResult = GetLastWorkoutSetResult(nextWorkoutSet.WorkoutSetId);

                if (workoutSessionId == 0 && (DateTime.Now - previousResult.DateCreated).TotalMinutes < 60)
                {
                    workoutSessionId = previousResult.WorkoutSessionId;
                }

                setViewModel = new SetViewModel(previousResult);

                setViewModel.Exercise   = exercise;
                setViewModel.WorkoutSet = nextWorkoutSet;
                setViewModel.WorkoutId  = workoutId;
                setViewModel.IsLastSet  = nextSetIsLast;
                setViewModel.PreviousWorkoutSetResult = previousResult;

                ModelState.SetModelValue("workoutSessionId", new ValueProviderResult(new Microsoft.Extensions.Primitives.StringValues(workoutSessionId.ToString()), CultureInfo.InvariantCulture));

                return(View("Set", setViewModel));
            }

            currentWorkoutSet = workoutSets.Where(ws => ws.WorkoutSetId == workoutSetId).First();

            nextWorkoutSet = workoutSets.Where(ws => ws.ExerciseId == exerciseId && ws.SetOrder > currentWorkoutSet.SetOrder).First();

            nextSetIsLast = nextWorkoutSet.SetOrder == workoutSets.Select(ws => ws.SetOrder).Max();

            previousResult = GetLastWorkoutSetResult(nextWorkoutSet.WorkoutSetId);

            if (workoutSessionId == 0 && (DateTime.Now - previousResult.DateCreated).TotalMinutes < 60)
            {
                workoutSessionId = previousResult.WorkoutSessionId;
            }

            setViewModel = new SetViewModel(previousResult);

            setViewModel.Exercise   = exercise;
            setViewModel.WorkoutSet = nextWorkoutSet;
            setViewModel.WorkoutId  = workoutId;
            setViewModel.IsLastSet  = nextSetIsLast;
            setViewModel.PreviousWorkoutSetResult = previousResult;

            ModelState.SetModelValue("workoutSessionId", new ValueProviderResult(new Microsoft.Extensions.Primitives.StringValues(workoutSessionId.ToString()), CultureInfo.InvariantCulture));

            return(View("Set", setViewModel));
        }