public IActionResult Index(ListWithFilterModel model, string searchText) { ListingType listingType; if (!string.IsNullOrEmpty(searchText)) { HttpContext.Session.Remove("filters"); HttpContext.Session.SetString("search", searchText); listingType = ListingType.All; } else { HttpContext.Session.Remove("search"); HttpContext.Session.SetString("filters", JsonConvert.SerializeObject(model.FilterSpecification)); listingType = model.FilterSpecification.Reason; } return(RedirectToAction(nameof(Index), new { page = Constants.FirstPage, sortOptions = SortOptions.Newest, listingType })); }
public async Task <IActionResult> Index(int page, SortOptions sortOptions = SortOptions.Newest, ListingType listingType = ListingType.All) { var model = new ListWithFilterModel { SortOption = sortOptions }; var searchText = HttpContext.Session.GetString("search"); var cachedFilters = HttpContext.Session.GetString("filters"); if (!string.IsNullOrEmpty(searchText)) { model.Search = searchText; model.Properties = await _propertyViewModelService.Search(User.Identity.Name, searchText, model.SortOption); } else { if (cachedFilters != null) { model.FilterSpecification = JsonConvert.DeserializeObject <PropertyFilterSpecification>(cachedFilters); } model.FilterSpecification.Reason = listingType; model.Properties = await _propertyViewModelService .ListProperties(User.Identity.Name, model.FilterSpecification, page == 0? 1 : page, Constants.ItemsPerPage, model.SortOption); } await SetCacheEntries(); return(View(model)); }