public JsonResult LoadFromList1(NotificationRegisterModel registerModel)
        {
            var list = new List <SelectListItem> {
                new SelectListItem {
                    Value = "-1", Text = "N/A"
                }
            };
            var selectListsModel = new NotificationSelectListsModel
            {
                EducationLevels = new SelectList(list, "Value", "Text"),
                Grades          = new SelectList(list, "Value", "Text"),
                AcademicGrades  = new SelectList(list, "Value", "Text"),
                AcademicCourses = new SelectList(list, "Value", "Text"),
                Personals       = new SelectList(list, "Value", "Text")
            };
            var dict = new Dictionary <NotificationType, Func <NotificationRegisterModel, NotificationSelectListsModel, NotificationSelectListsModel> >
            {
                { NotificationType.Section, LoadAcademicGradesFromList1 },
                { NotificationType.Course, LoadAcademicCoursesFromList1 },
                { NotificationType.Student, LoadStudentsFromList1 }
            };

            selectListsModel = dict[registerModel.NotificationType](registerModel, selectListsModel);
            return(Json(selectListsModel, JsonRequestBehavior.AllowGet));
        }
        private NotificationSelectListsModel LoadStudentsFromList2(NotificationRegisterModel model, NotificationSelectListsModel toReturn)
        {
            var sList = _studentRepository.Filter(
                x => x.MyGrade.Id == model.Id2).ToList();

            toReturn.Personals =
                new SelectList(
                    sList, "Id", "FullName");
            return(toReturn);
        }
        private NotificationSelectListsModel LoadStudentsFromList1(NotificationRegisterModel model, NotificationSelectListsModel toReturn)
        {
            var list = new List <SelectListItem> {
                new SelectListItem {
                    Value = "-1", Text = "N/A"
                }
            };
            var user =
                _userRepository.GetById(Convert.ToInt64(_sessionManagement.GetUserLoggedId()));
            var roleName = user.Role.Name;
            List <AcademicGrade> sList;

            if (roleName.Equals("Maestro"))
            {
                sList = _academicGradeRepository
                        .Filter(x => x.Grade.Id == model.Id1 && x.SectionTeacher.User.Id == user.Id)
                        .ToList();
                sList.AddRange(_academicCourseRepository.Filter(x => x.Teacher != null && x.Teacher.User.Id == user.Id).Select(y => y.AcademicGrade).ToList());
            }
            else
            {
                sList = _academicGradeRepository.Filter(
                    x => x.Grade.Id == model.Id1).ToList();
            }

            toReturn.AcademicGrades =
                new SelectList(
                    sList.DistinctBy(x => x.Section), "Id", "Section");
            if (sList.Any())
            {
                var first2 = sList.First();
                var sList2 = _studentRepository.Filter(
                    x => x.MyGrade.Id == first2.Id).ToList();
                toReturn.Personals = new SelectList(
                    sList2, "Id", "FullName");
            }
            else
            {
                toReturn.Personals = new SelectList(list, "Value", "Text");
            }
            return(toReturn);
        }
        private NotificationSelectListsModel LoadAcademicCoursesFromList2(NotificationRegisterModel model, NotificationSelectListsModel toReturn)
        {
            var sList = _academicCourseRepository.Filter(
                x => x.AcademicGrade.Id == model.Id2).ToList();

            toReturn.AcademicCourses =
                new SelectList(
                    sList, "Id", "Course.Name");
            return(toReturn);
        }
        private NotificationSelectListsModel LoadAcademicGradesFromList1(NotificationRegisterModel model, NotificationSelectListsModel toReturn)
        {
            var user =
                _userRepository.GetById(Convert.ToInt64(_sessionManagement.GetUserLoggedId()));
            var roleName = user.Role.Name;
            List <AcademicGrade> sList;

            if (roleName.Equals("Maestro"))
            {
                sList =
                    _academicGradeRepository.Filter(x => x.SectionTeacher != null && x.SectionTeacher.User.Id == user.Id && x.Grade.Id == model.Id1)
                    .ToList();
            }
            else
            {
                sList = _academicGradeRepository.Filter(
                    x => x.Grade.Id == model.Id1).ToList();
            }

            toReturn.AcademicGrades =
                new SelectList(
                    sList, "Id", "Section");
            return(toReturn);
        }
        private NotificationSelectListsModel LoadAcademicCourses(NotificationRegisterModel model, NotificationSelectListsModel toReturn)
        {
            var list = new List <SelectListItem> {
                new SelectListItem {
                    Value = "-1", Text = "N/A"
                }
            };
            var user =
                _userRepository.GetById(Convert.ToInt64(_sessionManagement.GetUserLoggedId()));
            var roleName = user.Role.Name;
            List <AcademicGrade> academicGrades;

            if (roleName.Equals("Director"))
            {
                academicGrades = GetAcademicGradesByDirectorCourse(user);
            }
            else if (roleName.Equals("Maestro"))
            {
                academicGrades = GetAcademicGradesByTeacherCourse(user);
            }
            else
            {
                academicGrades = GetAcademicGradesByAdmin();
            }
            var grades = academicGrades.Select(x => x.Grade).Distinct().ToList();

            toReturn.Grades = new SelectList(grades, "Id", "Name");
            if (academicGrades.Any())
            {
                var first = grades.First();
                var sList = academicGrades.Where(x => x.Grade.Id == first.Id).ToList();
                toReturn.AcademicGrades =
                    new SelectList(
                        sList, "Id", "Section");
                if (sList.Any())
                {
                    List <AcademicCourse> sList2;
                    var first2 = sList.First();
                    if (roleName.Equals("Maestro"))
                    {
                        sList2 = _academicCourseRepository.Filter(
                            x => x.AcademicGrade.Id == first2.Id && x.Teacher != null && x.Teacher.User.Id == user.Id).ToList();
                    }
                    else
                    {
                        sList2 = _academicCourseRepository.Filter(
                            x => x.AcademicGrade.Id == first2.Id).ToList();
                    }

                    toReturn.AcademicCourses = new SelectList(
                        sList2, "Id", "Course.Name");
                }
                else
                {
                    toReturn.AcademicCourses = new SelectList(list, "Value", "Text");
                }
            }
            else
            {
                toReturn.AcademicGrades = new SelectList(list, "Value", "Text");
            }
            return(toReturn);
        }
        private NotificationSelectListsModel LoadAcademicGrades(NotificationRegisterModel model, NotificationSelectListsModel toReturn)
        {
            var list = new List <SelectListItem> {
                new SelectListItem {
                    Value = "-1", Text = "N/A"
                }
            };
            var user =
                _userRepository.GetById(Convert.ToInt64(_sessionManagement.GetUserLoggedId()));

            var items = GetGradesByRole(user.Role.Name, user).ToList();

            toReturn.Grades = new SelectList(items, "Id", "Name");
            if (items.Any())
            {
                var first = items.First();
                List <AcademicGrade> sList = GetSectionByRole(first.Id, user);

                toReturn.AcademicGrades =
                    new SelectList(sList
                                   , "Id", "Section");
            }
            else
            {
                toReturn.AcademicGrades = new SelectList(list, "Value", "Text");
            }
            return(toReturn);
        }
        private NotificationSelectListsModel LoadGrades(NotificationRegisterModel model, NotificationSelectListsModel toReturn)
        {
            var user =
                _userRepository.GetById(Convert.ToInt64(_sessionManagement.GetUserLoggedId()));
            var userRoleName = user.Role.Name;

            toReturn.Grades = new SelectList(GetGradesByRole(userRoleName, user), "Id", "Name");

            return(toReturn);
        }
        private NotificationSelectListsModel LoadEducationLevels(NotificationRegisterModel model, NotificationSelectListsModel toReturn)
        {
            var user =
                _userRepository.GetById(Convert.ToInt64(_sessionManagement.GetUserLoggedId()));
            var isDirector = user.Role.Name.Equals("Director");

            toReturn.EducationLevels = new SelectList(isDirector ? _areaReporsitory.Filter(x => x.Director != null && x.Director.Id == user.Id) : _areaReporsitory.GetAllAreas(), "Id", "Name");
            return(toReturn);
        }