/// <summary> /// Initializes the specified rendering. /// </summary> /// <param name="rendering">The rendering.</param> /// <param name="searchResult">The search result.</param> public virtual void Initialize(Rendering rendering, SearchResults searchResult) { base.Initialize(rendering); if (searchResult == null) { return; } this.DisplayName = searchResult.DisplayName; this.Products = new List<ProductViewModel>(); foreach (var child in searchResult.SearchResultItems) { var productModel = new ProductViewModel(child); productModel.Initialize(this.Rendering); this.Products.Add(productModel); } }
/// <summary> /// This method returns child products for this category /// </summary> /// <param name="searchOptions">The options to perform the search with</param> /// <param name="categoryItem">The category item whose children to retrieve</param> /// <returns>A list of child products</returns> protected SearchResults GetChildProducts(CommerceSearchOptions searchOptions, Item categoryItem) { IEnumerable<CommerceQueryFacet> facets = null; var returnList = new List<Item>(); var totalPageCount = 0; var totalProductCount = 0; if (RenderingContext.Current.Rendering.Item != null) { SearchResponse searchResponse = null; if (CatalogUtility.IsItemDerivedFromCommerceTemplate(categoryItem, CommerceConstants.KnownTemplateIds.CommerceDynamicCategoryTemplate) || categoryItem.TemplateName == "Commerce Named Search") { try { var defaultBucketQuery = categoryItem[CommerceConstants.KnownSitecoreFieldNames.DefaultBucketQuery]; var persistendBucketFilter = categoryItem[CommerceConstants.KnownSitecoreFieldNames.PersistentBucketFilter]; persistendBucketFilter = CleanLanguageFromFilter(persistendBucketFilter); searchResponse = SearchNavigation.SearchCatalogItems(defaultBucketQuery, persistendBucketFilter, searchOptions); } catch (Exception ex) { Helpers.LogException(ex, this); } } else { searchResponse = SearchNavigation.GetCategoryProducts(categoryItem.ID, searchOptions); } if (searchResponse != null) { returnList.AddRange(searchResponse.ResponseItems); totalProductCount = searchResponse.TotalItemCount; totalPageCount = searchResponse.TotalPageCount; facets = searchResponse.Facets; } } var results = new SearchResults(returnList, totalProductCount, totalPageCount, searchOptions.StartPageIndex, facets); return results; }
/// <summary> /// Initializes the view model /// </summary> /// <param name="rendering">The rendering</param> /// <param name="products">The list of child products</param> /// <param name="sortFields">The fields to allow sorting on</param> /// <param name="searchOptions">Any search options used to find products in this category</param> public void Initialize(Rendering rendering, SearchResults products, IEnumerable<CommerceQuerySort> sortFields, CommerceSearchOptions searchOptions) { base.Initialize(rendering); int itemsPerPage = (searchOptions != null) ? searchOptions.NumberOfItemsToReturn : 0; if (products != null) { ChildProducts = new List<ProductViewModel>(); foreach (var child in products.SearchResultItems) { var productModel = new ProductViewModel(child); productModel.Initialize(this.Rendering); this.ChildProducts.Add(productModel); } ChildProductFacets = products.Facets; if (itemsPerPage > products.SearchResultItems.Count) { itemsPerPage = products.SearchResultItems.Count; } var alreadyShown = products.CurrentPageNumber * itemsPerPage; Pagination = new PaginationModel { PageNumber = products.CurrentPageNumber, TotalResultCount = products.TotalItemCount, NumberOfPages = products.TotalPageCount, PageResultCount = itemsPerPage, StartResultIndex = alreadyShown + 1, EndResultIndex = System.Math.Min(products.TotalItemCount, alreadyShown + itemsPerPage) }; } SortFields = sortFields; }
/// <summary> /// Initializes the view model /// </summary> /// <param name="rendering">The rendering</param> /// <param name="products">The list of child products</param> /// <param name="childCategories">The list of child categories</param> /// <param name="sortFields">The fields to allow sorting on</param> /// <param name="searchOptions">Any search options used to find products in this category</param> public void Initialize(Rendering rendering, SearchResults products, CategorySearchResults childCategories, IEnumerable <CommerceQuerySort> sortFields, CommerceSearchOptions searchOptions) { base.Initialize(rendering); ChildProducts = products == null ? new List <Item>() : products.SearchResultItems; }
/// <summary> /// Initializes the view model /// </summary> /// <param name="rendering">The rendering</param> /// <param name="products">The list of child products</param> /// <param name="childCategories">The list of child categories</param> /// <param name="sortFields">The fields to allow sorting on</param> /// <param name="searchOptions">Any search options used to find products in this category</param> public void Initialize(Rendering rendering, SearchResults products, CategorySearchResults childCategories, IEnumerable<CommerceQuerySort> sortFields, CommerceSearchOptions searchOptions) { base.Initialize(rendering); ChildProducts = products == null ? new List<Item>() : products.SearchResultItems; }