Example #1
0
        public async Task <Domain.Workout.Workout> UpdateWorkoutAsync(Domain.Workout.Workout workout)
        {
            _dbContext.Workout.Update(workout);
            await SaveChangesAsync();

            return(workout);
        }
        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));
        }
Example #3
0
        public async Task <Domain.Workout.Workout> SaveWorkoutAsync(Domain.Workout.Workout workout)
        {
            // very weird, the code above saves the reps out of order.  The code below was used in the orginal version and it for some reason saves the reps in the correct order
            FitnessTracker.Domain.Workout.Workout newworkout = new FitnessTracker.Domain.Workout.Workout
            {
                Name     = workout.Name,
                isActive = true
            };

            await _dbContext.Workout.AddAsync(newworkout);

            await SaveChangesAsync();

            foreach (var newSet in workout.Set)
            {
                newworkout.Set.Add(newSet);
                await SaveChangesAsync();
            }

            return(newworkout);
        }