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)); }