Esempio n. 1
0
        private MultipleProductSearchResults GetMultipleProductSearchResults(BaseItem dataSource,
                                                                             CommerceSearchOptions productSearchOptions)
        {
            Assert.ArgumentNotNull(productSearchOptions, "productSearchOptions");

            MultilistField searchesField         = dataSource.Fields[Templates.ProductSearch.Fields.NamedSearches.ToString()];
            var            searches              = searchesField.GetItems();
            var            productsSearchResults = new List <SearchResults>();

            foreach (var search in searches)
            {
                if (TemplateManager.GetTemplate(search).GetBaseTemplates().FirstOrDefault(t => t.ID == Templates.NamedSearch.ID) != null)
                {
                    var productsSearchResult = _catalogManager.GetProductSearchResults(search, productSearchOptions);

                    if (productsSearchResult != null)
                    {
                        productsSearchResult.NamedSearchItem = search;
                        productsSearchResult.DisplayName     = search[Templates.NamedSearch.Fields.Title.ToString()];
                        productsSearchResults.Add(productsSearchResult);
                    }
                }
                else if (TemplateManager.GetTemplate(search).GetBaseTemplates().FirstOrDefault(t => t.ID == Templates.SelectedProducts.ID) != null)
                {
                    var itemCount        = 0;
                    var staticSearchList = new SearchResults
                    {
                        DisplayName     = search[Templates.SelectedProducts.Fields.Title.ToString()],
                        NamedSearchItem = search
                    };

                    MultilistField productListField = search.Fields[Templates.SelectedProducts.Fields.ProductList.ToString()];
                    var            productList      = productListField.GetItems();

                    foreach (var productItem in productList)
                    {
                        var catalogItemtype = productItem.ItemType();

                        if (catalogItemtype == StorefrontConstants.ItemTypes.Category || catalogItemtype == StorefrontConstants.ItemTypes.Product)
                        {
                            staticSearchList.SearchResultItems.Add(productItem);
                            itemCount++;
                        }
                    }

                    staticSearchList.TotalItemCount = itemCount;
                    staticSearchList.TotalPageCount = itemCount;
                    productsSearchResults.Add(staticSearchList);
                }
            }

            return(new MultipleProductSearchResults(productsSearchResults));
        }