public ActionResult AdsList(SearchViewModel options) { try { string kept = null; if (options.SearchText != null) { kept = options.SearchText.Split(',')[0]; } var text = RemoveDiacritics(kept); var states = _ctx.States.ToList(); var areas = _ctx.Areas.ToList(); var houses = _ctx.Houses .Include(x => x.User) .Include("State") .Include("State.Areas") .Include("User.UserPhotos") .Include(x => x.HousePhotos) .Where(x => x.Availability == true && x.IsConfirmed == Confirmation.Pass) .Where(x => string.IsNullOrEmpty(kept) || x.Area.Name.ToLower().Contains(text.ToLower())) .ToList(); AdSearchFiltersViewModel vm = new AdSearchFiltersViewModel(); vm.Houses = houses; vm.States = states; vm.Areas = areas; if (text != null) { var area = _ctx.Areas .FirstOrDefault(y => y.Name.Contains(text.ToLower())); vm.AreaId = area.Id; vm.StateId = area.State.Id; } else { //vm.StateId = states.First().Id; //vm.AreaId = states.First().Areas.First().Id; vm.StateId = 0; vm.AreaId = 0; } return(View(vm)); } catch (Exception ex) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, $"{ex.Message}")); } }
public ActionResult AdsFilters(AdSearchFiltersViewModel searchVm) { try { var query = from obj in _ctx.Houses select obj; switch (searchVm.Pets.ToLower()) { case "yes": query = query.Where(x => x.Pets == "Yes"); break; case "no": query = query.Where(x => x.Pets == "No"); break; default: break; } switch (searchVm.Smoker.ToLower()) { case "yes": query = query.Where(x => x.Smoker == "Yes"); break; case "no": query = query.Where(x => x.Smoker == "No"); break; default: break; } switch (searchVm.Gender.ToLower()) { case "male": query = query.Where(x => x.Gender == "Male"); break; case "female": query = query.Where(x => x.Gender == "Female"); break; default: break; } switch (searchVm.SearchRentCost.ToLower()) { case "0-100": query = query.Where(x => x.RentCost >= 0 && x.RentCost <= 100); break; case "101-200": query = query.Where(x => x.RentCost >= 101 && x.RentCost <= 200); break; case "201-300": query = query.Where(x => x.RentCost >= 201 && x.RentCost <= 300); break; case "301+": query = query.Where(x => x.RentCost >= 301); break; case "default": query = query.Where(x => x.RentCost >= 0); break; default: break; } switch (searchVm.HasPhotos.ToLower()) { case "yes": query = query.Where(x => x.HousePhotos.Count > 0); break; case "no": query = query.Where(y => y.HousePhotos.Count == 0); break; default: break; } var houses = query .Include(x => x.User) .Include(x => x.HousePhotos) .OrderByDescending(x => x.Created) .Where(x => x.Availability == true && x.IsConfirmed == Confirmation.Pass) .Where(x => x.StateId == searchVm.StateId && x.Area.Id == searchVm.AreaId) .ToList(); var states = _ctx.States.ToList(); var areas = _ctx.Areas.ToList(); AdSearchFiltersViewModel vm = new AdSearchFiltersViewModel(); vm.Houses = houses; vm.States = states; vm.Smoker = searchVm.Smoker; vm.Pets = searchVm.Pets; vm.Gender = searchVm.Gender; vm.SearchRentCost = searchVm.SearchRentCost; vm.HasPhotos = searchVm.HasPhotos; vm.Areas = areas; vm.StateId = states.First().Id; vm.AreaId = states.First().Areas.First().Id; return(View("AdsList", vm)); } catch (Exception ex) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, $"{ex.Message}")); } }