public virtual async Task <SearchQueryResult> SearchQueryProductAsync(SearchQueryProductParams param)
        {
            var criteria = param.Criteria;
            var request  = GerSearchQueryRequest(param);

            request.Query.IncludeTotalCount = true;
            request.Query.MaximumItems      = criteria.NumberOfItemsPerPage;
            request.Query.StartingIndex     = (criteria.Page - 1) * criteria.NumberOfItemsPerPage;
            request.CultureName             = criteria.CultureInfo.Name;
            request.SearchTerms             = criteria.Keywords;
            request.ScopeId         = criteria.Scope;
            request.IncludeFacets   = criteria.IncludeFacets;
            request.Facets          = GetFacetFieldNameToQuery(criteria);
            request.FacetPredicates = BuildFacetPredicates(criteria);
            request.AutoCorrect     = criteria.AutoCorrect;
            var sortDefinitions = BuildQuerySortings(criteria);

            if (sortDefinitions != null)
            {
                request.Query.Sortings.Add(sortDefinitions);
            }

            var result = await OvertureClient.SendAsync(request).ConfigureAwait(false);

            return(result);
        }
 private SearchBySearchQueryRequest GerSearchQueryRequest(SearchQueryProductParams param)
 {
     return(new SearchBySearchQueryRequest()
     {
         QueryType = param.QueryType,
         QueryName = param.QueryName,
         ScopeId = param.ScopeId,
         CultureName = param.CultureName,
         Query = new Query
         {
             Filter = new FilterGroup
             {
                 BinaryOperator = BinaryOperator.And,
                 Filters = new List <Filter>
                 {
                     new Filter
                     {
                         Member = "CatalogId",
                         Operator = Operator.Equals,
                         Value = param.ScopeId
                     },
                     new Filter
                     {
                         Member = "Active",
                         Operator = Operator.Equals,
                         Value = bool.TrueString
                     }
                 }
             }
         }
     });
 }
        public async Task <SearchQueryResult> SearchQueryProductAsync(SearchQueryProductParams param)
        {
            var criteria = param.Criteria;

            var request = new SearchBySearchQueryRequest()
            {
                QueryType   = param.QueryType,
                QueryName   = param.QueryName,
                ScopeId     = param.ScopeId,
                CultureName = param.CultureName,
                Query       = new Query
                {
                    Filter = new FilterGroup
                    {
                        BinaryOperator = BinaryOperator.And,
                        Filters        = new List <Filter>
                        {
                            new Filter
                            {
                                Member   = "CatalogId",
                                Operator = Operator.Equals,
                                Value    = param.ScopeId
                            },
                            new Filter
                            {
                                Member   = "Active",
                                Operator = Operator.Equals,
                                Value    = bool.TrueString
                            }
                        }
                    }
                }
            };

            request.Query.IncludeTotalCount = true;
            request.Query.MaximumItems      = criteria.NumberOfItemsPerPage;
            request.Query.StartingIndex     = (criteria.Page - 1) * criteria.NumberOfItemsPerPage;
            request.CultureName             = criteria.CultureInfo.Name;
            request.SearchTerms             = criteria.Keywords;
            request.ScopeId         = criteria.Scope;
            request.IncludeFacets   = criteria.IncludeFacets;
            request.Facets          = GetFacetFieldNameToQuery(criteria);
            request.FacetPredicates = BuildFacetPredicates(criteria);
            request.AutoCorrect     = criteria.AutoCorrect;

            var sortDefinitions = BuildQuerySortings(criteria);

            if (sortDefinitions != null)
            {
                request.Query.Sortings.Add(sortDefinitions);
            }

            var result = await OvertureClient.SendAsync(request).ConfigureAwait(false);

            return(result);
        }