Пример #1
0
        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));
        }
Пример #5
0
        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));
        }
Пример #6
0
        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));
        }