public async Task UpdateWorkoutAsync(int workoutId, WorkoutUpdateDto workoutUpdateDto) { Workout workout = await _workoutRepo.GetWorkoutByIdAsync(workoutId); _mapper.Map(workoutUpdateDto, workout); await _unitOfWork.SaveAllAsync(); }
public async Task <IActionResult> UpdateWorkout(int workoutId, WorkoutUpdateDto workoutUpdateDto) { if (!await _workoutService.UserHasWorkout(User.GetUserId(), workoutId)) { return(Unauthorized("You dont own this workout")); } await _workoutService.UpdateWorkoutAsync(workoutId, workoutUpdateDto); return(NoContent()); }
public IHttpActionResult PutWorkout(int id, WorkoutUpdateDto workout) { /* if (!ModelState.IsValid) * { * return BadRequest(ModelState); * }*/ if (id != workout.WorkoutId) { return(BadRequest()); } var work = db.Workouts.Find(id); AutoMapper.Mapper.Map(workout, work); // Making list of musclegroups ids got from dto var workoutMuscleGroupsIdList = new List <int>(); foreach (var i in workout.MuscleGroups) { workoutMuscleGroupsIdList.Add(i.MuscleGroupId); } // Checking if musclegroup existed in current workout, if not, remove it foreach (var i in work.MuscleGroups.ToList()) { if (!workoutMuscleGroupsIdList.Contains(i.MuscleGroupId)) { work.MuscleGroups.Remove(i); } } // Cheking if muscle group exists in database and adds it to workout if it does foreach (var i in workout.MuscleGroups) { if (!work.MuscleGroups.Any(r => r.MuscleGroupId == i.MuscleGroupId)) { var addMuscleGroup = db.MuscleGroups.Find(i.MuscleGroupId); work.MuscleGroups.Add(addMuscleGroup); } } // Making list of exercises ids got from dto var workoutExerciseIdList = new List <int>(); foreach (var i in workout.Exercises) { workoutExerciseIdList.Add(i.ExerciseId); } // Checking if exercise existed in current workout, if not, remove it foreach (var i in work.Exercises.ToList()) { if (!workoutExerciseIdList.Contains(i.ExerciseId)) { work.Exercises.Remove(i); } } // Cheking if muscle group exists in database and adds it to workout if it does foreach (var i in workout.Exercises) { if (!work.Exercises.Any(r => r.ExerciseId == i.ExerciseId)) { var addExercise = db.Exercises.Find(i.ExerciseId); work.Exercises.Add(addExercise); } } // Making list of workoutDays ids got from dto var workoutWorkoutDaysIdList = new List <int>(); foreach (var i in workout.WorkoutDays) { workoutWorkoutDaysIdList.Add(i.WorkoutDayId); } // Checking if workoutDay existed in current workout, if not, remove it foreach (var i in work.WorkoutDays.ToList()) { if (!workoutWorkoutDaysIdList.Contains(i.WorkoutDayId)) { work.WorkoutDays.Remove(i); } } // Cheking if muscle group exists in database and adds it to workout if it does foreach (var i in workout.WorkoutDays) { // if workday is new, than create new and add to workout if (i.WorkoutDayId == 0) { var workoutWorkoutDaysNew = new List <WorkoutDay>(); foreach (var j in workout.WorkoutDays) { var workoutDays = new WorkoutDay(); workoutDays.WorkoutDayMonthWeek = j.WorkoutDayMonthWeek; workoutDays.WorkoutDayWeekDay = j.WorkoutDayWeekDay; workoutWorkoutDaysNew.Add(workoutDays); } work.WorkoutDays = workoutWorkoutDaysNew; } // if workday already existed, find it and change its values else { var workday = db.WorkoutDays.Find(i.WorkoutDayId); workday.WorkoutDayMonthWeek = i.WorkoutDayMonthWeek; workday.WorkoutDayWeekDay = i.WorkoutDayWeekDay; } } try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!WorkoutExists(id)) { return(NotFound()); } else { throw; } } var updatedWorkout = db.Workouts.Find(id); WorkoutGetDto result = AutoMapper.Mapper.Map <WorkoutGetDto>(updatedWorkout); return(Ok(result)); }