private Task <DailyWorkout> MakeDailyWorkout(WorkoutDisplayDTO workout) { _logger.LogInformation("SaveDailyWorkoutCommandHandler"); DailyWorkout dailyWorkout = new DailyWorkout(); dailyWorkout.Phase = workout.Phase; dailyWorkout.WorkoutDate = DateTime.Now; dailyWorkout.WorkoutId = workout.WorkoutId; dailyWorkout.Duration = workout.Duration; foreach (SetDisplayDTO set in workout.Set) { set.Exercise.ForEach(ex => ex.Reps.ForEach(rep => dailyWorkout.DailyWorkoutInfo.Add(new DailyWorkoutInfo { ExerciseId = ex.ExerciseId, SetId = ex.SetId, RepsId = rep.RepsId, WeightUsed = rep.Weight, WorkoutId = workout.WorkoutId }))); } return(Task.FromResult(dailyWorkout)); }
private int GetMaxReps(WorkoutDisplayDTO workout) { int maxReps = 0; workout.Set.ForEach(set => maxReps = Math.Max(set.DisplayReps.Count, maxReps)); return(maxReps); }
private void CheckSetCount(WorkoutDisplayDTO workout) { int maxReps = GetMaxReps(workout); workout.Set.ForEach(set => { if (maxReps > set.DisplayReps.Count) { set.AdditionalSets = maxReps - set.DisplayReps.Count; } }); }
private Task <WorkoutDisplayDTO> MakeWorkoutDTO(Domain.Workout.Workout workout) { WorkoutDisplayDTO retval = new WorkoutDisplayDTO { WorkoutId = workout.WorkoutId, Name = workout.Name, Phase = string.Empty, isActive = workout.isActive, // No AutoMapper conversion here because there is special logic here (e.g. display repos and weight Set = workout.Set.OrderBy(set => set.SetOrder).Select(x => new SetDisplayDTO { Name = x.SetName.Name, SetId = x.SetId, SetOrder = x.SetOrder, WorkoutId = x.WorkoutId, SetNameId = x.SetNameId, DisplayReps = x.Exercise.First().Reps.OrderBy(ord => ord.RepsName.RepOrder).Select(rep => new RepsDisplayDTO { RepsId = rep.RepsId, Name = rep.RepsName.Name, RepOrder = rep.RepsName.RepOrder, ExerciseId = rep.ExerciseId, SetId = rep.SetId, RepsNameId = rep.RepsNameId, }).Distinct().ToList(), Exercise = x.Exercise.OrderBy(exp => exp.ExerciseOrder).Select(ex => new ExerciseDisplayDTO { ExerciseId = ex.ExerciseId, Name = ex.ExerciseName.Name, ExerciseNameId = ex.ExerciseNameId, ExerciseOrder = ex.ExerciseOrder, Measure = ex.Measure, SetId = x.SetId, Reps = ex.Reps.OrderBy(ord => ord.RepsName.RepOrder).Select(rep => new RepsDisplayDTO { RepsId = rep.RepsId, Weight = FindWeight(workout.DailyWorkout, x.SetId, ex.ExerciseId, rep.RepsId), Name = rep.RepsName.Name, TimeToNextExercise = rep.TimeToNextExercise, RepOrder = rep.RepsName.RepOrder, ExerciseId = rep.ExerciseId, RepsNameId = rep.RepsNameId, SetId = rep.SetId }).ToList() }).ToList() }).ToList() }; CheckSetCount(retval); return(Task.FromResult(retval)); }
public async Task <IActionResult> GetWorkoutForDisplay(int?id) { _logger.LogInformation("Getting Workouts For Display"); WorkoutDisplayDTO workout = await _mediator.Send <WorkoutDisplayDTO>(new GetWorkoutForDisplayQuery() { Id = id.Value }); return(Ok(workout)); }
public async Task <IActionResult> SaveDailyWorkout([FromBody] WorkoutDisplayDTO item) { _logger.LogInformation("Saving Daily Workout"); DailyWorkoutDTO savedWorkout = await _mediator.Send <DailyWorkoutDTO>(new SaveDailyWorkoutCommand() { Workout = item }); await _mediator.Send <Unit>(new SaveDailyWorkoutToEventBusCommand() { Workout = savedWorkout }); // send to event bus return(Ok(savedWorkout)); }