public async Task <CatalogSearchResult> SearchAsync(SearchFilterExpression[] filters, int pageIndex = 0, int pageSize = int.MaxValue) { var searchQuery = new CatalogSearchQuery() .OriginatesFrom("Rule/Search") .WithLanguage(_services.WorkContext.WorkingLanguage) .WithCurrency(_services.WorkContext.WorkingCurrency) .BuildFacetMap(false) .CheckSpelling(0) .Slice(pageIndex * pageSize, pageSize) .SortBy(ProductSortingEnum.CreatedOn); if ((filters?.Length ?? 0) == 0) { return(new CatalogSearchResult(searchQuery)); } SearchFilterExpressionGroup group; if (filters.Length == 1 && filters[0] is SearchFilterExpressionGroup group2) { group = group2; } else { group = new SearchFilterExpressionGroup(); group.AddExpressions(filters); } searchQuery = group.ApplyFilters(searchQuery); var searchResult = await _catalogSearchService.SearchAsync(searchQuery); return(searchResult); }
public override IRuleExpressionGroup VisitRuleSet(RuleSetEntity ruleSet) { var group = new SearchFilterExpressionGroup { Id = ruleSet.Id, LogicalOperator = ruleSet.LogicalOperator, IsSubGroup = ruleSet.IsSubGroup, Value = ruleSet.Id, RawValue = ruleSet.Id.ToString(), Provider = this }; return(group); }