public async Task <IActionResult> Create( [Bind("WorkoutProgramId,WorkoutProgramName,WorkoutProgramDescription")] WorkoutProgramViewModel model, string[] selectedWorkouts) { var workoutProgram = _mapper.Map <WorkoutProgramViewModel, WorkoutProgram>(model); if (selectedWorkouts != null) { workoutProgram.WorkoutAssigments = new List <WorkoutAssigment>(); foreach (var workout in selectedWorkouts) { var workoutsToAdd = new WorkoutAssigment() { WorkoutProgramId = workoutProgram.WorkoutProgramId, WorkoutId = int.Parse(workout) }; workoutProgram.WorkoutAssigments.Add(workoutsToAdd); } } if (ModelState.IsValid) { _unitOfWork.WorkoutProgramRepository.Add(workoutProgram); await _unitOfWork.WorkoutProgramRepository.SaveAsync(); return(RedirectToAction(nameof(Index))); } PopulateAssignedWorkoutData(workoutProgram); var workoutProgramViewModel = _mapper.Map <WorkoutProgram, WorkoutProgramViewModel>(workoutProgram); return(View(workoutProgramViewModel)); }
private void UpdateWorkoutProgramWorkouts(string[] selectedWorkouts, WorkoutProgram workoutProgram) { if (selectedWorkouts == null) { workoutProgram.WorkoutAssigments = new List <WorkoutAssigment>(); return; } var selectedWorkoutsHS = new HashSet <string>(selectedWorkouts); var workoutExercises = new HashSet <int> (workoutProgram.WorkoutAssigments.Select(c => c.Workout.WorkoutId)); var workouts = _unitOfWork.WorkoutRepository.GetAll(); foreach (var workout in workouts) { if (selectedWorkoutsHS.Contains(workout.WorkoutId.ToString())) { if (!workoutExercises.Contains(workout.WorkoutId)) { workoutProgram.WorkoutAssigments.Add(new WorkoutAssigment() { WorkoutProgramId = workoutProgram.WorkoutProgramId, WorkoutId = workout.WorkoutId }); } } else { if (workoutExercises.Contains(workout.WorkoutId)) { WorkoutAssigment workoutToRemove = workoutProgram.WorkoutAssigments.SingleOrDefault(i => i.WorkoutId == workout.WorkoutId); workoutProgram.WorkoutAssigments.Remove(workoutToRemove); _unitOfWork.WorkoutProgramRepository.SaveAsync(); } } } }