private RentalAdvancedSearchViewModel InitialiazeSuburbListAndPropertyType() { RentalAdvancedSearchViewModel advancedSearch = (RentalAdvancedSearchViewModel)TempData["AdvancedSearch"] ?? new RentalAdvancedSearchViewModel(); if (advancedSearch.Address == null) { advancedSearch.Address = new AddressViewModel(); } if (advancedSearch.Address.SuburbList == null) { advancedSearch.Address.SuburbList = new List <string>(); } if (advancedSearch.Address.Suburb != null) { advancedSearch.Address.Suburb = advancedSearch.Address.Suburb.ToLower(); } if (advancedSearch.Title != null) { advancedSearch.Title = advancedSearch.Title.ToLower(); } if (advancedSearch.PropertyType == null) { advancedSearch.PropertyType = new List <String>(); } return(advancedSearch); }
public ActionResult AdvanceSearchResult(string sortOrder, string currentFilter, int?page) { var user = User.Identity.Name; var login = AccountService.GetLoginByEmail(user); var dbContext = db.RentalListing; var roles = AccountService.GetUserRolesbyEmail(User.Identity.Name); var isTenant = roles.Contains(5); var tenant = TenantService.GetTenantByEmail(User.Identity.Name); GetPropertyTypes(); IQueryable <RentalListingModel> allRentalProperties = GetAllRentalProperties(sortOrder, isTenant); RentalAdvancedSearchViewModel advancedSearch = InitialiazeSuburbListAndPropertyType(); string newFilter = CreateFilterForPaging(currentFilter, advancedSearch); ViewBag.SearchCount = 1; IQueryable <RentalListingModel> RentalProperties = ConfigureSorting(sortOrder, ref allRentalProperties); allRentalProperties = GetFilteredRentalProperties(allRentalProperties, advancedSearch); if (allRentalProperties.Count() == 0) { ViewBag.SearchCount = 0; ViewBag.CurrentFilter = ""; allRentalProperties = RentalProperties; } allRentalProperties.ToList().ForEach(x => x.WatchListText = RentalService.GetWatchListStatus(x.Id, login.Id)); TempData["CurrentLink"] = "RentallListing"; CreatePaging(page, allRentalProperties, advancedSearch, newFilter); advancedSearch.IsUserTenant = isTenant; advancedSearch.IsTenantProfileComplete = tenant?.IsCompletedPersonalProfile ?? false; return(View(advancedSearch)); }
private static string CreateFilterForPaging(string currentFilter, RentalAdvancedSearchViewModel advancedSearch) { var newFilter = currentFilter; if (!String.IsNullOrEmpty(currentFilter)) { Dictionary <string, string> keyValuePairs = currentFilter.Split(',') .Select(value => value.Split('=')) .ToDictionary(pair => pair[0], pair => pair[1]); if (keyValuePairs["BedroomMax"] != "") { advancedSearch.BedroomMax = Convert.ToInt32(keyValuePairs["BedroomMax"]); } if (keyValuePairs["BedroomMin"] != "") { advancedSearch.BedroomMin = Convert.ToInt32(keyValuePairs["BedroomMin"]); } if (keyValuePairs["BathroomMax"] != "") { advancedSearch.BathroomMax = Convert.ToInt32(keyValuePairs["BathroomMax"]); } if (keyValuePairs["BathroomMin"] != "") { advancedSearch.BathroomMin = Convert.ToInt32(keyValuePairs["BathroomMin"]); } if (keyValuePairs["RentMax"] != "") { advancedSearch.RentMax = Convert.ToDecimal(keyValuePairs["RentMax"]); } if (keyValuePairs["RentMin"] != "") { advancedSearch.RentMin = Convert.ToDecimal(keyValuePairs["RentMin"]); } if (keyValuePairs["LandSqmMax"] != "") { advancedSearch.LandSqmMax = Convert.ToInt32(keyValuePairs["LandSqmMax"]); } if (keyValuePairs["LandSqmMin"] != "") { advancedSearch.LandSqmMin = Convert.ToInt32(keyValuePairs["LandSqmMin"]); } if (keyValuePairs["Title"] != "") { advancedSearch.Title = keyValuePairs["Title"]; } for (int j = 0; keyValuePairs.ContainsKey(("Suburb" + j)); j++) { advancedSearch.Address.SuburbList.Add(keyValuePairs["Suburb" + j]); } for (int j = 0; keyValuePairs.ContainsKey(("PropertyType" + j)); j++) { advancedSearch.PropertyType.Add(keyValuePairs["PropertyType" + j]); } } else { newFilter = "BedroomMax=" + advancedSearch.BedroomMax + ",BedroomMin=" + advancedSearch.BedroomMin + ",BathroomMax=" + advancedSearch.BathroomMax + ",BathroomMin=" + advancedSearch.BathroomMin + ",RentMax=" + advancedSearch.RentMax + ",RentMin=" + advancedSearch.RentMin + ",LandSqmMax=" + advancedSearch.LandSqmMax + ",LandSqmMin=" + advancedSearch.LandSqmMin + ",Title=" + advancedSearch.Title; for (int i = 0; i < advancedSearch.Address.SuburbList.Count; i++) { newFilter = newFilter + ",Suburb" + i + "=" + advancedSearch.Address.SuburbList[i]; } for (int i = 0; i < advancedSearch.PropertyType.Count; i++) { newFilter = newFilter + ",PropertyType" + i + "=" + advancedSearch.PropertyType[i]; } } return(newFilter); }
public ActionResult AdvanceSearchResult(string sortOrder, int?page, RentalAdvancedSearchViewModel advancedSearch) { TempData["AdvancedSearch"] = advancedSearch; return(RedirectToAction("AdvanceSearchResult", new { sortOrder = sortOrder ?? "Title" })); }
private static IQueryable <RentalListingModel> GetFilteredRentalProperties(IQueryable <RentalListingModel> allRentalProperties, RentalAdvancedSearchViewModel advancedSearch) { if (advancedSearch.CheckForNull(advancedSearch)) { if (advancedSearch.Address.SuburbList.Count != 0) { allRentalProperties = from r in allRentalProperties where advancedSearch.Address.SuburbList.Contains(r.Address.Suburb) select r; } if (advancedSearch.PropertyType.Count != 0) { allRentalProperties = from r in allRentalProperties where advancedSearch.PropertyType.Contains(r.PropertyType) select r; } allRentalProperties = from r in allRentalProperties where r.Title.ToLower().Contains(advancedSearch.Title ?? r.Title.ToLower()) && ((r.Bedrooms <= (advancedSearch.BedroomMax ?? r.Bedrooms)) && (r.Bedrooms >= (advancedSearch.BedroomMin ?? r.Bedrooms))) && ((r.Bathrooms <= (advancedSearch.BathroomMax ?? r.Bathrooms)) && (r.Bedrooms >= (advancedSearch.BathroomMin ?? r.Bathrooms))) && ((r.LandSqm <= (advancedSearch.LandSqmMax ?? r.LandSqm)) && (r.LandSqm >= (advancedSearch.LandSqmMin ?? r.LandSqm))) && ((r.TargetRent <= (advancedSearch.RentMax ?? r.TargetRent)) && (r.TargetRent >= (advancedSearch.RentMin ?? r.TargetRent))) select r; } return(allRentalProperties); }
private static void CreatePaging(int?page, IQueryable <RentalListingModel> allRentalProperties, RentalAdvancedSearchViewModel advancedSearch, string newFilter) { advancedSearch.PagedInput = new PagedInput { ActionName = "AdvanceSearchResult", ControllerName = "Home", PagedLinkValues = new RouteValueDictionary(new { SortOrder = advancedSearch.SortOrder, currentFilter = newFilter, ReturnUrl = advancedSearch.ReturnUrl }) }; var rvr = new RouteValueDictionary(new { SearchString = advancedSearch.SearchString, ReturnUrl = advancedSearch.ReturnUrl }); var sortOrders = new List <SortOrderModel>(); sortOrders.Add(new SortOrderModel { SortOrder = "Latest First", ActionName = "AdvanceSearchResult", RouteValues = rvr.AddRouteValue("SortOrder", "Latest First") }); sortOrders.Add(new SortOrderModel { SortOrder = "Earliest First", ActionName = "AdvanceSearchResult", RouteValues = rvr.AddRouteValue("SortOrder", "Earliest First") }); sortOrders.Add(new SortOrderModel { SortOrder = "Request Status", ActionName = "AdvanceSearchResult", RouteValues = rvr.AddRouteValue("SortOrder", "Request Status") }); advancedSearch.SortOrders = sortOrders; advancedSearch.SearchCount = allRentalProperties.Count(); if (String.IsNullOrWhiteSpace(advancedSearch.SearchString)) { advancedSearch.Page = page ?? 1; } advancedSearch.PageCount = allRentalProperties.ToPagedList(advancedSearch.Page, 12).PageCount; advancedSearch.Items = allRentalProperties.ToPagedList(advancedSearch.Page, 12); }