public async Task <ProductCardForEditAndFilters> GetProductCardForEditAndFiltersAsync(FilterBaseAndSearch filters) { ProductCardForEditAndFilters result = new ProductCardForEditAndFilters() { Filters = filters, SearchEnumArray = searchEnumArrayProducts, SortEnumArray = sortEnumArrayProducts }; string keyName = $"ProductListFilter{filters.GetFilterName()}", keyNameAllProduct = $"ProductListALll", desired = filters.Desired; var products = _cacheService.Get <List <ProductCardForEdit> >(keyName); if (products == null || products.Count == 0) { products = _cacheService.Get <List <ProductCardForEdit> >(keyNameAllProduct); if (products == null || products.Count == 0) { products = await _fcdStoreContext.GetStProductCardAsync(); _cacheService.Set <List <ProductCardForEdit> >(keyNameAllProduct, products); } if (desired != null && filters.WhereSearch != null) { switch (Enum.Parse(typeWhereSearchProductsSt, filters.WhereSearch)) { case (StProductSearchs.По_Id): { products = FindProductsForId(products, desired); break; } case (StProductSearchs.По_Названию): { products = FindProductsForName(products, desired); break; } default: { break; } } } result.ProductCards = products; _dataFiltering.Filtering(result); products = result.ProductCards; _cacheService.Set <List <ProductCardForEdit> >(keyName, products); } result.ProductCards = products; _dataFiltering.SetFilters(result); if (result.ProductCards.Count > 0) { result.ProductCards = _dataFiltering.Paginator <ProductCardForEdit>(result.ProductCards, (int)filters.CountVisablePositions, (int)filters.CurrentPosition); } return(result); }
//------------------------------ public async Task <IActionResult> ProductsView(string whereSearch, string desired, string sortType, int?currentPosition, string select) { FilterBaseAndSearch filters = new FilterBaseAndSearch(desired: desired, whereSearch: whereSearch, countVisablePositions: 3, currentPosition: currentPosition, selectFromSelectList: select, sortType: sortType); ProductCardForEditAndFilters result = await _dataProcessingConveyor.GetProductCardForEditAndFiltersAsync(filters); return(View(result)); }