예제 #1
0
        public async Task <IEnumerable <StudentModel> > Search(StudentSearchViewModel search)
        {
            bool filterByGraduatingYears = search.SelectedGraduatingYears != null && search.SelectedGraduatingYears.Any();
            bool filterByMajors          = search.SelectedMajors != null && search.SelectedMajors.Any();
            bool filterByCountries       = search.SelectedCountries != null && search.SelectedCountries.Any();

            if (!filterByGraduatingYears && !filterByMajors && !filterByCountries)
            {
                return(Enumerable.Empty <StudentModel>());
            }

            IEnumerable <StudentModel> students = await StudentRepository.GetStudents();

            if (filterByGraduatingYears)
            {
                students = students.Where(x =>
                {
                    return(x.GraduatingYear.HasValue &&
                           search.SelectedGraduatingYears.Any(y => y == x.GraduatingYear.Value));
                });
            }

            if (filterByMajors)
            {
                students = students.Where(x =>
                {
                    return(x.SelectedMajors != null &&
                           x.SelectedMajors.Count() > 0 &&
                           x.SelectedMajors.Intersect(search.SelectedMajors).Count() > 0);
                });
            }

            if (filterByCountries)
            {
                IEnumerable <StudyAbroadViewModel> studyAbroad = await StudyAbroadRepository.GetAll();

                students = studyAbroad
                           .Where(x => search.SelectedCountries.Any(y => y == x.CountryId))
                           .Select(x => x.Student);

                //students = students
                //    .Where(x => x.StudyAbroadCountry.Count<int>() > 0)
                //    .Where(x => x.StudyAbroadCountry.Intersect(search.SelectedCountries).Count<int>() > 0);
            }

            return(students);
        }
예제 #2
0
 public async Task <IEnumerable <StudyAbroadViewModel> > GetAll()
 {
     return(await StudyAbroadRepository.GetAll());
 }