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