private static IQueryable <Company> FilterCompaniesByRevenue(CompanySearchCriteria searchCriteria, IQueryable <Company> query) { switch (searchCriteria.Revenue) { case RevenueRanges.ZeroToTenThousand: return(query.Where(x => x.TotalRevenue >= 0 && x.TotalRevenue < 10000)); case RevenueRanges.TenThousandToHundredThousand: return(query.Where(x => x.TotalRevenue >= 10000 && x.TotalRevenue < 100000)); case RevenueRanges.HundredThousandToMilion: return(query.Where(x => x.TotalRevenue >= 100000 && x.TotalRevenue < 1000000)); default: throw new ArgumentOutOfRangeException(); } }
private static IQueryable <Company> FilterCompaniesByEmployees(CompanySearchCriteria searchCriteria, IQueryable <Company> query) { switch (searchCriteria.Employees) { case EmployeesRanges.ZeroToThousand: return(query.Where(x => x.NumberOfEmployees >= 0 && x.NumberOfEmployees < 1000)); case EmployeesRanges.ThousandToTenThousand: return(query.Where(x => x.NumberOfEmployees >= 1000 && x.NumberOfEmployees < 10000)); case EmployeesRanges.TenThousandToFiftyThousand: return(query.Where(x => x.NumberOfEmployees >= 10000 && x.NumberOfEmployees < 50000)); default: throw new ArgumentOutOfRangeException(); } }
// GET: /Company/ public ActionResult Index(CompanySearchCriteria searchCriteria) { var collection = _db.Companies; IQueryable <Company> query = collection; if (searchCriteria == null) { return(View(new CompaniesModel() { Companies = query.ToList(), AvailableLocations = _db.Companies.Select(x => x.Location).Distinct().ToList() })); } if (!string.IsNullOrEmpty(searchCriteria.Location)) { query = query.Where(x => x.Location == searchCriteria.Location); } if (searchCriteria.Revenue != RevenueRanges.None) { query = FilterCompaniesByRevenue(searchCriteria, query); } if (searchCriteria.Employees != EmployeesRanges.None) { query = FilterCompaniesByEmployees(searchCriteria, query); } var companiesModel = new CompaniesModel() { Companies = query.ToList(), AvailableLocations = _db.Companies.Select(x => x.Location).Distinct().ToList(), RevenueFilter = searchCriteria.Revenue, LocationFilter = searchCriteria.Location, EmployeesRangesFilter = searchCriteria.Employees }; return(View(companiesModel)); }