/// <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> /// 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.Implicit = searchResult.Implicit; 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> /// 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; }
protected IEnumerable<CategoryViewModel> GroupRelationshipsByDescription([NotNull] CommerceStorefront storefront, RelationshipField field, IEnumerable<string> relationshipNames, IEnumerable<CatalogRelationshipInformation> productRelationshipInfoList, Rendering rendering) { Dictionary<string, CategoryViewModel> relationshipGroups = new Dictionary<string, CategoryViewModel>(StringComparer.OrdinalIgnoreCase); if (field != null && productRelationshipInfoList != null) { foreach (var relationshipInfo in productRelationshipInfoList) { if (!relationshipNames.Any() || relationshipNames.Contains(relationshipInfo.RelationshipName, StringComparer.OrdinalIgnoreCase)) { var relationshipDescription = string.IsNullOrWhiteSpace(relationshipInfo.RelationshipDescription) ? relationshipInfo.RelationshipName : relationshipInfo.RelationshipDescription; CategoryViewModel categoryModel = null; if (!relationshipGroups.TryGetValue(relationshipDescription, out categoryModel)) { categoryModel = new CategoryViewModel { ChildProducts = new List<ProductViewModel>(), RelationshipName = relationshipInfo.RelationshipName, RelationshipDescription = relationshipDescription }; relationshipGroups[relationshipDescription] = categoryModel; } var targetItemId = ID.Parse(relationshipInfo.ToItemExternalId); var targetItem = field.InnerField.Database.GetItem(targetItemId); var productModel = new ProductViewModel(targetItem); productModel.Initialize(rendering); this.GetProductRating(targetItem); categoryModel.ChildProducts.Add(productModel); } } } if (relationshipGroups.Count > 0) { List<ProductViewModel> productViewModelList = new List<ProductViewModel>(); foreach (string key in relationshipGroups.Keys) { CategoryViewModel viewModel = relationshipGroups[key]; var childProducts = viewModel.ChildProducts; if (childProducts != null && childProducts.Count > 0) { productViewModelList.AddRange(childProducts); } } if (productViewModelList.Count > 0) { this.GetProductBulkPrices(productViewModelList); this.InventoryManager.GetProductsStockStatus(storefront, productViewModelList); } } return relationshipGroups.Values; }
/// <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; }