private ProductPageViewModel Build(ProductModel productModel) { var viewModel = productModel.MapTo <ProductPageViewModel>(); viewModel.ProductItem = _itemViewModelBuilder.Build(productModel, false); viewModel.InformationTemplate = _productFieldViewModelBuilder.Build(productModel, "Product information"); viewModel.SpecificationTemplate = _productFieldViewModelBuilder.Build(productModel, "Product specification"); viewModel.BrandPage = GetBrandPage(viewModel.ProductItem.Brand); viewModel.AccessoriesProducts = GetRelatedProducts(productModel, RelationTypeNameConstants.Accessory); viewModel.SimilarProducts = GetRelatedProducts(productModel, RelationTypeNameConstants.SimilarProducts); return(viewModel); }
private async Task BuildProducts(CategoryPageViewModel pageModel) { var searchQuery = _requestModelAccessor.RequestModel.SearchQuery.Clone(); if (searchQuery.PageSize == null) { var pageSize = _requestModelAccessor.RequestModel.WebsiteModel.GetValue <int?>(AcceleratorWebsiteFieldNameConstants.ProductsPerPage) ?? DefaultWebsiteFieldValueConstants.ProductsPerPage; searchQuery.PageSize = pageSize; } var searchResults = await _productSearchService.SearchAsync(searchQuery, searchQuery.Tags, true, true, true); if (searchResults == null) { pageModel.Pagination = new PaginationViewModel(0, 1); return; } pageModel.Products = searchResults.Items.Value.Cast <ProductSearchResult>().Select(c => _productItemBuilder.Build(c.Item)).ToList(); pageModel.Pagination = new PaginationViewModel(searchResults.Total, searchQuery.PageNumber, searchResults.PageSize); }
public ProductListViewModel Build() { var page = _requestModelAccessor.RequestModel.CurrentPageModel; var viewModel = page.MapTo <ProductListViewModel>(); var searchQuery = _requestModelAccessor.RequestModel.SearchQuery.Clone(); if (searchQuery.PageSize == null) { var pageSize = _requestModelAccessor.RequestModel.WebsiteModel.Fields.GetValue <int?>(AcceleratorWebsiteFieldNameConstants.ProductsPerPage) ?? DefaultWebsiteFieldValueConstants.ProductsPerPage; searchQuery.PageSize = pageSize; } if (!searchQuery.ContainsFilter()) { searchQuery.CategoryShowRecursively = false; } var searchResponse = _productSearchService.Search(searchQuery, searchQuery.Tags, true, true, true); var searchResults = searchResponse == null ? null : _productSearchService.Transform(searchQuery, searchResponse); if (searchResults != null) { viewModel.Products = searchResults.Items.Value.Cast <ProductSearchResult>().Select(c => _productItemBuilder.Build(c.Item)).ToList(); viewModel.Pagination = new PaginationViewModel(searchResults.Total, searchQuery.PageNumber, searchResults.PageSize); } return(viewModel); }