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