示例#1
0
        public Connect.SearchOptions Build(Connect.SearchSettings searchSettings, ProductSearchOptions searchOptions)
        {
            Assert.ArgumentNotNull(searchSettings, nameof(searchSettings));
            Assert.ArgumentNotNull(searchOptions, nameof(searchOptions));

            if (!string.IsNullOrWhiteSpace(searchOptions.SortField) &&
                !searchSettings.SortFieldNames.Contains(
                    searchOptions.SortField,
                    StringComparer.InvariantCultureIgnoreCase))
            {
                throw new Exception("Sort field not found");
            }

            return(new Connect.SearchOptions
            {
                SearchKeyword = searchOptions.SearchKeyword,
                Facets = this.GetFacetsIntersection(searchSettings.Facets, searchOptions.Facets),
                StartPageIndex = searchOptions.PageNumber,
                NumberOfItemsToReturn =
                    searchOptions.PageSize > 0 ? searchOptions.PageSize : searchSettings.ItemsPerPage,
                CategoryId = searchOptions.CategoryId,
                SortField = !string.IsNullOrEmpty(searchOptions.SortField)
                    ? searchOptions.SortField
                    : searchSettings.SortFieldNames?.FirstOrDefault(),
                SortDirection = searchOptions.SortDirection == SortDirection.Asc
                    ? Connect.SortDirection.Asc
                    : Connect.SortDirection.Desc
            });
        }
        public Connect.SearchOptions Build(Connect.SearchSettings searchSettings, ProductSearchOptions searchOptions)
        {
            Assert.ArgumentNotNull(searchSettings, nameof(searchSettings));
            Assert.ArgumentNotNull(searchOptions, nameof(searchOptions));

            return(new Connect.SearchOptions
            {
                SearchKeyword = searchOptions.SearchKeyword,
                Facets = this.GetFacetsIntersection(searchSettings.Facets, searchOptions.Facets),
                StartPageIndex = searchOptions.PageNumber,
                NumberOfItemsToReturn =
                    searchOptions.PageSize > 0 ? searchOptions.PageSize : searchSettings.ItemsPerPage,
                CategoryId = searchOptions.CategoryId,
                SortField = !string.IsNullOrEmpty(searchOptions.SortField)
                    ? searchOptions.SortField
                    : searchSettings.SortFieldNames?.FirstOrDefault(),
                SortDirection = searchOptions.SortDirection == SortDirection.Asc
                    ? Connect.SortDirection.Asc
                    : Connect.SortDirection.Desc
            });
        }