Пример #1
0
        public async Task <IActionResult> ProductsList(string sortType,
                                                       bool?onlySale,
                                                       bool?onlyAvailability,
                                                       int?minPrice,
                                                       int?maxPrice,
                                                       int?currentPosition,
                                                       string select)
        {
            if (select != null)
            {
                FilterProductCard filters = new FilterProductCard(onlyAvailability: onlyAvailability,
                                                                  onlySale: onlySale,
                                                                  minPrice: minPrice,
                                                                  maxPrice: maxPrice,
                                                                  selectFromSelectList: select,
                                                                  countVisablePositions: 3,
                                                                  currentPosition: currentPosition,
                                                                  sortType: sortType
                                                                  );
                string loadCurrentPosition = _session.GetString("CurrentPositionProduct");
                if (loadCurrentPosition != null)
                {
                    filters.CurrentPosition = Convert.ToInt32(loadCurrentPosition);
                    _session.Remove("CurrentPositionProduct");
                }
                var result = await _dataProcessingConveyor.GetProductCardAndBasketAndFiltersAsync(filters);

                return(View(result));
            }
            return(NotFound());
        }
Пример #2
0
        public async Task <IActionResult> Search(string whereSearch,
                                                 string desired,
                                                 string sortType,
                                                 bool?onlySale,
                                                 bool?onlyAvailability,
                                                 int?minPrice,
                                                 int?maxPrice,
                                                 int?currentPosition,
                                                 string select)
        {
            if (desired != null)
            {
                if (desired.Length >= 3)
                {
                    FilterProductCard filters = new FilterProductCard(onlyAvailability: onlyAvailability,
                                                                      onlySale: onlySale,
                                                                      minPrice: minPrice,
                                                                      maxPrice: maxPrice,
                                                                      selectFromSelectList: select,
                                                                      countVisablePositions: 3,
                                                                      currentPosition: currentPosition,
                                                                      sortType: sortType,
                                                                      desired: desired,
                                                                      whereSearch: whereSearch
                                                                      );

                    string loadCurrentPosition = _session.GetString("CurrentPositionProduct");
                    if (loadCurrentPosition != null)
                    {
                        filters.CurrentPosition = Convert.ToInt32(loadCurrentPosition);
                        _session.Remove("CurrentPositionProduct");
                    }
                    ProductCardAndBasketAndFilters result = await _dataProcessingConveyor.GetFilteringProductCardAndBasketAndFiltersAsync(filters);

                    if (result != null)
                    {
                        return(View(result));
                    }
                }
                else
                {
                    return(Redirect(Request.Headers["Referer"].ToString()));
                }
            }
            return(NotFound());
        }
Пример #3
0
        public async Task <IActionResult> SearchAjax(string whereSearch,
                                                     string desired,
                                                     string sortType,
                                                     bool?onlySale,
                                                     bool?onlyAvailability,
                                                     int?minPrice,
                                                     int?maxPrice,
                                                     int?currentPosition,
                                                     string select)
        {
            if (desired != null)
            {
                Type typeWhereSearch      = typeof(WhereSearch);
                FilterProductCard filters = new FilterProductCard(onlyAvailability: onlyAvailability,
                                                                  onlySale: onlySale,
                                                                  minPrice: minPrice,
                                                                  maxPrice: maxPrice,
                                                                  selectFromSelectList: select,
                                                                  countVisablePositions: 3,
                                                                  currentPosition: currentPosition,
                                                                  sortType: sortType,
                                                                  desired: desired,
                                                                  whereSearch: whereSearch
                                                                  );
                var result = await _dataProcessingConveyor.GetFilteringProductCardAndBasketAndFiltersAsync(filters);

                return(new JsonResult(result.ProductCards.Select(t => new {
                    jsId = t.Id,
                    jsName = t.Name,
                    jsProductTypeId = t.ProductTypeId,
                    jsParentProductTypeId = t.ParentTypeId,
                    jsMainPicturePath = t.MainPicturePath,
                    jsMainAttribute = t.MainAttribute,
                    jsPrice = t.Price,
                    jsSale = t.Sale,
                    jsHexColor = t.HexColor,
                    jsCurrentPosition = currentPosition
                }).ToList()));
            }
            return(NotFound());
        }
Пример #4
0
        public async Task <ProductCardAndBasketAndFilters> GetFilteringProductCardAndBasketAndFiltersAsync(FilterProductCard filters)
        {
            ProductCardAndBasketAndFilters result = new ProductCardAndBasketAndFilters
            {
                SearchEnumArray = searchEnumArray,
                SortEnumArray   = sortEnumArray,
                Filters         = filters
            };
            int    currentPosition          = (int)filters.CurrentPosition;
            string keyName                  = $"ProductCardsForSearch:{filters.GetFilterName()}",
                   desired                  = filters.Desired.ToLower();
            List <ProductCard> productCards = _cacheService.Get <List <ProductCard> >(keyName);

            if (productCards == null)
            {
                switch (Enum.Parse(typeWhereSearchProduct, filters.WhereSearch))
                {
                case (WhereSearch.По_названии):
                {
                    productCards = await _fcdStoreContext.GetProductCardsSearchNameAsync(desired, currentPosition);

                    break;
                }

                case (WhereSearch.В_атрибутах):
                {
                    productCards = await _fcdStoreContext.GetProductCardsSearchAttributesAsync(desired, currentPosition);

                    break;
                }

                case (WhereSearch.В_описании):
                {
                    productCards = await _fcdStoreContext.GetProductCardsSearchDescriptionsAsync(desired, currentPosition);

                    break;
                }

                case (WhereSearch.Везде):
                {
                    productCards = await _fcdStoreContext.GetProductCardsSearchAllAsync(desired, currentPosition);

                    break;
                }

                default:
                {
                    productCards = await _fcdStoreContext.GetProductCardsSearchNameAsync(desired, currentPosition);

                    break;
                }
                }
                result.ProductCards = productCards;
                _dataFiltering.Filtering(result);
                productCards = result.ProductCards;
                _cacheService.Set <List <ProductCard> >(keyName, productCards);
            }
            result.ProductCards = productCards;
            _dataFiltering.SetFilters(result);
            result.ProductCards     = _dataFiltering.Paginator <ProductCard>(result.ProductCards, (int)filters.CountVisablePositions, currentPosition);
            result.ProductsInBasket = await GetProductsInBasketAsync();

            result.SetBasketsCost();
            return(result);
        }
Пример #5
0
        public async Task <ProductCardAndBasketAndFilters> GetProductCardAndBasketAndFiltersAsync(FilterProductCard filters)
        {
            ProductCardAndBasketAndFilters result = new ProductCardAndBasketAndFilters
            {
                SearchEnumArray = searchEnumArray,
                SortEnumArray   = sortEnumArray,
                Filters         = filters
            };
            string             keyName      = $"ProductCards:{filters.GetFilterName()}";
            List <ProductCard> productCards = _cacheService.Get <List <ProductCard> >(keyName);

            if (productCards == null)
            {
                productCards = await _fcdStoreContext.GetProductCardsAsync(filters.SelectFromSelectList, (int)filters.CurrentPosition);

                result.ProductCards = productCards;
                _dataFiltering.Filtering(result);
                productCards = result.ProductCards;
                _cacheService.Set <List <ProductCard> >(keyName, result.ProductCards);
            }
            result.ProductCards = productCards;
            _dataFiltering.SetFilters(result);
            result.ProductCards     = _dataFiltering.Paginator <ProductCard>(result.ProductCards, (int)filters.CountVisablePositions, (int)filters.CurrentPosition);
            result.ProductsInBasket = await GetProductsInBasketAsync();

            result.SetBasketsCost();
            return(result);
        }