/// <summary>
        /// Возвращает привязку "Дисциплина - Помещение"
        /// </summary>
        /// <param name="eduPlanId"></param>
        /// <param name="disciplineId"></param>
        /// <param name="eduYearId"></param>
        /// <param name="disciplinePomeshenieId"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public async Task <DisciplinePomeshenie> GetDisciplinePomeshenieByUserNameAsync(int eduPlanId, int disciplineId, int eduYearId, int?disciplinePomeshenieId, string userName)
        {
            var eduPlan = await GetEduPlanByUserNameAsync(eduPlanId, userName);

            if (eduPlan == null)
            {
                return(null);
            }
            var eduPlanEduYear = eduPlan.EduPlanEduYears.FirstOrDefault(y => y.EduYearId == eduYearId);

            var discipline = await GetDisciplineByUserNameAsync(eduPlanId, disciplineId, userName);

            if (discipline == null)
            {
                return(null);
            }

            DisciplinePomeshenie disciplinePomeshenie = _eduPlanRepository
                                                        .GetDisciplinePomeshenieByDisciplineAndDisciplinePomeshenieId(discipline, disciplinePomeshenieId);

            if (disciplinePomeshenie == null)
            {
                disciplinePomeshenie = new DisciplinePomeshenie
                {
                    DisciplinePomeshenieId = disciplinePomeshenieId ?? 0,
                    Discipline             = discipline,
                    DisciplineId           = disciplineId,
                    EduPlanEduYear         = eduPlanEduYear,
                    EduPlanEduYearId       = eduPlanEduYear.EduPlanEduYearId
                };
            }

            return(disciplinePomeshenie);
        }
        public async Task <IActionResult> Edit(int id, [Bind("DisciplinePomeshenieId,DisciplineId,EduPlanEduYearId,PomeshenieId")] DisciplinePomeshenie disciplinePomeshenie)
        {
            if (id != disciplinePomeshenie.DisciplinePomeshenieId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(disciplinePomeshenie);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!DisciplinePomeshenieExists(disciplinePomeshenie.DisciplinePomeshenieId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                var eduPlanEduYear = await _context.EduPlanEduYears.SingleOrDefaultAsync(py => py.EduPlanEduYearId == disciplinePomeshenie.EduPlanEduYearId);

                return(RedirectToAction(nameof(Index), new { eduPlanEduYear?.EduPlanId, eduPlanEduYear?.EduYearId }));
            }

            return(View(disciplinePomeshenie));
        }
        /// <summary>
        /// Создаё
        /// </summary>
        /// <param name="EduPlanId"></param>
        /// <param name="DisciplineId"></param>
        /// <param name="EduYearId"></param>
        /// <param name="DisciplinePomeshenieId"></param>
        /// <returns></returns>
        public async Task <IActionResult> DisciplinePomesheniesCreateOrEdit(int EduPlanId, int DisciplineId, int EduYearId, int?DisciplinePomeshenieId)
        {
            DisciplinePomeshenie disciplinePomeshenie = await _metodKomissiyaRepository
                                                        .GetDisciplinePomeshenieByUserNameAsync(EduPlanId, DisciplineId, EduYearId, DisciplinePomeshenieId, User.Identity.Name);

            ViewBag.EduPlanId   = EduPlanId;
            ViewBag.Pomesheniya = _selectListRepository.GetSelectListPomesheniya();
            return(View(disciplinePomeshenie));
        }
        /// <summary>
        /// Удаляет привязку "Дисциплина - Помещение"
        /// </summary>
        /// <param name="eduPlanId"></param>
        /// <param name="disciplineId"></param>
        /// <param name="eduYearId"></param>
        /// <param name="disciplinePomeshenieId"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public async Task RemoveDisciplinePomeshenieByUserNameAsync(int eduPlanId,
                                                                    int disciplineId, int eduYearId, int disciplinePomeshenieId, string userName)
        {
            DisciplinePomeshenie disciplinePomeshenie = await GetDisciplinePomeshenieByUserNameAsync(eduPlanId, disciplineId, eduYearId, disciplinePomeshenieId, userName);

            if (disciplinePomeshenie == null || disciplinePomeshenie.DisciplinePomeshenieId == 0)
            {
                return;
            }

            await _eduPlanRepository.RemoveDisciplinePomeshenieAsync(disciplinePomeshenie);
        }
        public async Task <IActionResult> DisciplinePomesheniesCreateOrEditConfirmed(int EduPlanId,
                                                                                     int EduYearId, DisciplinePomeshenie disciplinePomeshenie)
        {
            DisciplinePomeshenie disciplinePomeshenieChanging = await _metodKomissiyaRepository
                                                                .GetDisciplinePomeshenieByUserNameAsync(EduPlanId, disciplinePomeshenie.DisciplineId, EduYearId, disciplinePomeshenie.DisciplinePomeshenieId, User.Identity.Name);

            if (disciplinePomeshenieChanging != null)
            {
                disciplinePomeshenieChanging.PomeshenieId = disciplinePomeshenie.PomeshenieId;
                await _metodKomissiyaRepository.UpdateDisciplinePomeshenieAsync(disciplinePomeshenieChanging);
            }

            return(RedirectToAction(nameof(EduPlanPreview), new { id = EduPlanId }));
        }
        public async Task <IActionResult> Create([Bind("DisciplinePomeshenieId,DisciplineId,EduPlanEduYearId,PomeshenieId")] DisciplinePomeshenie disciplinePomeshenie)
        {
            if (ModelState.IsValid)
            {
                _context.Add(disciplinePomeshenie);
                await _context.SaveChangesAsync();

                var eduPlanEduYear = await _context.EduPlanEduYears.SingleOrDefaultAsync(py => py.EduPlanEduYearId == disciplinePomeshenie.EduPlanEduYearId);

                return(RedirectToAction(nameof(Index), new { eduPlanEduYear?.EduPlanId, eduPlanEduYear?.EduYearId }));
            }

            return(View(disciplinePomeshenie));
        }
        public async Task <IActionResult> DisciplinePomesheniesRemove(int EduPlanId,
                                                                      int DisciplineId, int EduYearId, int DisciplinePomeshenieId)
        {
            DisciplinePomeshenie disciplinePomeshenieChanging = await _metodKomissiyaRepository
                                                                .GetDisciplinePomeshenieByUserNameAsync(EduPlanId, DisciplineId, EduYearId, DisciplinePomeshenieId, User.Identity.Name);

            if (disciplinePomeshenieChanging == null || disciplinePomeshenieChanging.DisciplinePomeshenieId == 0)
            {
                return(NotFound());
            }

            ViewBag.EduPlanId = EduPlanId;
            ViewBag.Teachers  = _selectListRepository.GetSelectListTeacherFio();
            return(View(disciplinePomeshenieChanging));
        }
 /// <summary>
 /// Обновляет привязку "Дисциплина - Помещение"
 /// </summary>
 /// <param name="disciplinePomeshenieChanging"></param>
 /// <returns></returns>
 public async Task UpdateDisciplinePomeshenieAsync(DisciplinePomeshenie disciplinePomeshenieChanging)
 {
     await _eduPlanRepository.UpdateDisciplinePomeshenieAsync(disciplinePomeshenieChanging);
 }