public void Search(object sender, EventArgs e) { if (selectedCategory == null) selectedCategory = new ViewCategory() { ID = 0, Name = "All" }; Researchers = View<researcher>(GetResearchers(selectedCategory)); }
/// <summary> /// Filters the researchers by the prescribed category. /// </summary> /// <param name="viewCategory"> /// The category to filter the listing by. /// </param> public void SearchByCategory(ViewCategory viewCategory) { Researchers = View<researcher>(GetResearchers(viewCategory)); }
/// <summary> /// Gets a list of researchers taking into account how the list is to be viewed. /// </summary> public List<researcher> GetResearchers(ViewCategory viewCategory) { var lst = new List<researcher>(); string name = SearchFilter; if (string.IsNullOrEmpty(name)) { lst = researcherProvider.Get(); } else { lst = researcherProvider.GetByNamePart(name); } switch (viewCategory.ID) { case 0: // All break; case 1: // Researchers lst = researcherProvider.GetStaff(lst); break; case 2: // Students lst = researcherProvider.GetStudents(lst); break; case 3: // Level A lst = researcherProvider.GetByEmploymentLevel(lst, researcher_level.A); break; case 4: // Level B lst = researcherProvider.GetByEmploymentLevel(lst, researcher_level.B); break; case 5: // Level C lst = researcherProvider.GetByEmploymentLevel(lst, researcher_level.C); break; case 6: // Level D lst = researcherProvider.GetByEmploymentLevel(lst, researcher_level.D); break; case 7: // Level E lst = researcherProvider.GetByEmploymentLevel(lst, researcher_level.E); break; } return lst .OrderBy(r => r.family_name) .ThenBy(r => r.given_name) .Take(LIST_MAX_PAGINATION).ToList(); }