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 })); }
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; }
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)); }