private List <SelectListItem> GetSortByOptions(ProductSearchQuery query)
        {
            var productSearchSorts = new List <ProductSearchSort>
            {
                ProductSearchSort.MostPopular,
                ProductSearchSort.Latest,
                ProductSearchSort.NameAToZ,
                ProductSearchSort.NameZToA,
                ProductSearchSort.PriceLowToHigh,
                ProductSearchSort.PriceHighToLow,
            };

            if (query.CategoryId.HasValue && _getProductSearchSortByValue.CategoryHasBeenSorted(query))
            {
                productSearchSorts.Insert(0, ProductSearchSort.DisplayOrder);
            }
            if (!string.IsNullOrWhiteSpace(query.SearchTerm))
            {
                productSearchSorts.Insert(0, ProductSearchSort.Relevance);
            }
            ProductSearchSort productSearchSort = _getProductSearchSortByValue.Get(query);

            return(productSearchSorts.BuildSelectItemList(sort => sort.GetDescription(),
                                                          sort => Convert.ToInt32(sort).ToString(),
                                                          sort => sort == productSearchSort, emptyItem: null));
        }
Esempio n. 2
0
        public Sort GetSort(ProductSearchQuery query)
        {
            switch (_getProductSearchSortByValue.Get(query))
            {
            case ProductSearchSort.MostPopular:
                return
                    (new Sort(new[]
                {
                    new SortField(FieldDefinition.GetFieldName <ProductSearchNumberBoughtDefinition>(),
                                  SortField.INT, true)
                }));

            case ProductSearchSort.Latest:
                return
                    (new Sort(new[]
                {
                    new SortField(FieldDefinition.GetFieldName <ProductSearchCreatedOnDefinition>(),
                                  SortField.STRING, true)
                }));

            case ProductSearchSort.NameAToZ:
                return
                    (new Sort(new[]
                {
                    new SortField(FieldDefinition.GetFieldName <ProductSearchNameSortDefinition>(),
                                  SortField.STRING)
                }));

            case ProductSearchSort.NameZToA:
                return
                    (new Sort(new[]
                {
                    new SortField(FieldDefinition.GetFieldName <ProductSearchNameSortDefinition>(),
                                  SortField.STRING, true)
                }));

            case ProductSearchSort.PriceLowToHigh:
                return
                    (new Sort(new[] { new SortField(FieldDefinition.GetFieldName <ProductSearchPriceDefinition>(), SortField.DOUBLE) }));

            case ProductSearchSort.PriceHighToLow:
                return
                    (new Sort(new[]
                {
                    new SortField(FieldDefinition.GetFieldName <ProductSearchPriceDefinition>(), SortField.DOUBLE,
                                  true)
                }));

            case ProductSearchSort.DisplayOrder:
                if (query.CategoryId != null)
                {
                    return
                        (new Sort(new[]
                    {
                        new SortField(ProductSearchIndex.GetCategoryFieldName(query.CategoryId.Value), SortField.INT,
                                      false)
                    }));
                }
                return(Sort.RELEVANCE);

            default:
                return(Sort.RELEVANCE);
            }
        }