Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }