private async Task <TrainingDayCreateEditViewModel> AddSelectListsToViewModelAsync(
            TrainingDayCreateEditViewModel viewModel, Guid trainingWeekId)
        {
            var trainingDayTypes = await _bll.TrainingDayTypes.AllAsync();

            var returnViewModel = new TrainingDayCreateEditViewModel
            {
                TrainingDayTypes = new SelectList(
                    trainingDayTypes, nameof(TrainingDayType.Id), nameof(TrainingDayType.Name)),
                WorkoutRoutineId = viewModel.WorkoutRoutineId,
                DaysOfWeek       = await GetDaysOfWeekSelectListAsync(trainingWeekId),
                TrainingDay      = viewModel.TrainingDay
            };

            return(returnViewModel);
        }
        public async Task <IActionResult> Edit(Guid id)
        {
            if (await _bll.TrainingDays.IsPartOfBaseRoutineAsync(id))
            {
                var trainingDay = await _bll.TrainingDays.FindAsync(id);

                var parentRoutine = await _bll.WorkoutRoutines.FindWithTrainingDayIdAsync(id);

                var viewModel = new TrainingDayCreateEditViewModel
                {
                    TrainingDay      = trainingDay,
                    WorkoutRoutineId = parentRoutine.Id
                };
                return(View(await AddSelectListsToViewModelAsync(viewModel, trainingDay.TrainingWeekId)));
            }

            return(NotFound());
        }
        public async Task <IActionResult> Create(TrainingDayCreateEditViewModel viewModel)
        {
            if (await _bll.TrainingWeeks.IsPartOfBaseRoutineAsync(viewModel.TrainingDay.TrainingWeekId))
            {
                if (ModelState.IsValid)
                {
                    viewModel.TrainingDay.Id = Guid.NewGuid();
                    _bll.TrainingDays.Add(viewModel.TrainingDay);
                    await _bll.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index), "TrainingWeeks", new { id = viewModel.WorkoutRoutineId }));
                }

                return(View(await AddSelectListsToViewModelAsync(viewModel, viewModel.TrainingDay.TrainingWeekId)));
            }

            return(BadRequest());
        }