public async Task <ExerciseDto> EditExerciseAsync(int exerciseId, ExerciseEditModel input)
        {
            var exerciseFromDb = await this.context
                                 .Exercises
                                 .Include(x => x.MainMuscleGroup)
                                 .Include(x => x.SecondaryMuscleGroupExercises)
                                 .ThenInclude(x => x.MuscleGroup)
                                 .FirstOrDefaultAsync(x => x.Id == exerciseId);

            if (exerciseFromDb == null)
            {
                throw new ArgumentNullException(string.Format(ExercisesConstants.UnexistingExercise, exerciseId));
            }

            var updatedExercise = input
                                  .MapTo <ExerciseEditModel, Exercise>(exerciseFromDb);

            await this.context
            .SaveChangesAsync();

            var exerciseToReturn = await this.context
                                   .Exercises
                                   .Include(x => x.MainMuscleGroup)
                                   .Include(x => x.SecondaryMuscleGroupExercises)
                                   .ThenInclude(x => x.MuscleGroup)
                                   .FirstOrDefaultAsync(x => x.Name == input.Name);

            return(exerciseToReturn
                   .MapTo <ExerciseDto>());
        }
        public async Task <ActionResult> Edit(int exerciseId, ExerciseEditModel input)
        {
            var isExerciseExists = await this.exercisesService
                                   .IsExistsByIdAsync(exerciseId);

            if (!isExerciseExists)
            {
                return(BadRequest(string.Format(ExercisesConstants.UnexistingExercise, exerciseId)));
            }

            var result = await this.exercisesService
                         .EditExerciseAsync(exerciseId, input);

            return(Ok(result));
        }