public async Task <IEnumerable <ProductOverviewModel> > Handle(GetProductOverview request, CancellationToken cancellationToken) { if (request.Products == null) { throw new ArgumentNullException(nameof(request.Products)); } var displayPrices = await _permissionService.Authorize(StandardPermission.DisplayPrices, _workContext.CurrentCustomer); var enableShoppingCart = await _permissionService.Authorize(StandardPermission.EnableShoppingCart, _workContext.CurrentCustomer); var enableWishlist = await _permissionService.Authorize(StandardPermission.EnableWishlist, _workContext.CurrentCustomer); int pictureSize = request.ProductThumbPictureSize.HasValue ? request.ProductThumbPictureSize.Value : _mediaSettings.ProductThumbPictureSize; bool priceIncludesTax = _workContext.TaxDisplayType == TaxDisplayType.IncludingTax; var res = new Dictionary <string, string> { { "Products.CallForPrice", _translationService.GetResource("Products.CallForPrice", _workContext.WorkingLanguage.Id) }, { "Products.PriceRangeFrom", _translationService.GetResource("Products.PriceRangeFrom", _workContext.WorkingLanguage.Id) }, { "Media.Product.ImageLinkTitleFormat", _translationService.GetResource("Media.Product.ImageLinkTitleFormat", _workContext.WorkingLanguage.Id) }, { "Media.Product.ImageAlternateTextFormat", _translationService.GetResource("Media.Product.ImageAlternateTextFormat", _workContext.WorkingLanguage.Id) } }; var tasks = new List <Task <ProductOverviewModel> >(); foreach (var product in request.Products) { tasks.Add(GetProductOverviewModel(product, request, displayPrices, enableShoppingCart, enableWishlist, pictureSize, priceIncludesTax, res)); } var result = await Task.WhenAll <ProductOverviewModel>(tasks); return(result); }
public async Task <IEnumerable <ProductOverviewModel> > Handle(GetProductOverview request, CancellationToken cancellationToken) { if (request.Products == null) { throw new ArgumentNullException("products"); } var displayPrices = await _permissionService.Authorize(StandardPermissionProvider.DisplayPrices, _workContext.CurrentCustomer); var enableShoppingCart = await _permissionService.Authorize(StandardPermissionProvider.EnableShoppingCart, _workContext.CurrentCustomer); var enableWishlist = await _permissionService.Authorize(StandardPermissionProvider.EnableWishlist, _workContext.CurrentCustomer); int pictureSize = request.ProductThumbPictureSize.HasValue ? request.ProductThumbPictureSize.Value : _mediaSettings.ProductThumbPictureSize; bool priceIncludesTax = _workContext.TaxDisplayType == TaxDisplayType.IncludingTax; var res = new Dictionary <string, string> { { "Products.CallForPrice", _localizationService.GetResource("Products.CallForPrice", _workContext.WorkingLanguage.Id) }, { "Products.PriceRangeFrom", _localizationService.GetResource("Products.PriceRangeFrom", _workContext.WorkingLanguage.Id) }, { "Media.Product.ImageLinkTitleFormat", _localizationService.GetResource("Media.Product.ImageLinkTitleFormat", _workContext.WorkingLanguage.Id) }, { "Media.Product.ImageAlternateTextFormat", _localizationService.GetResource("Media.Product.ImageAlternateTextFormat", _workContext.WorkingLanguage.Id) } }; var models = new List <ProductOverviewModel>(); foreach (var product in request.Products) { var model = PrepareProductOverviewModel(product); //price if (request.PreparePriceModel) { await PreparePriceModel(model, product, res, request.ForceRedirectionAfterAddingToCart, enableShoppingCart, displayPrices, enableWishlist, priceIncludesTax); } //picture if (request.PreparePictureModel) { await PreparePictureModel(model, product, res, pictureSize); } //specs if (request.PrepareSpecificationAttributes && product.ProductSpecificationAttributes.Any()) { model.SpecificationAttributeModels = await _mediator.Send(new GetProductSpecification() { Language = _workContext.WorkingLanguage, Product = product }); } //reviews model.ReviewOverviewModel = await _mediator.Send(new GetProductReviewOverview() { Product = product, Language = _workContext.WorkingLanguage, Store = _storeContext.CurrentStore }); models.Add(model); } return(models); }
private async Task <ProductOverviewModel> GetProductOverviewModel(Product product, GetProductOverview request, bool displayPrices, bool enableShoppingCart, bool enableWishlist, int pictureSize, bool priceIncludesTax, Dictionary <string, string> res) { var model = PrepareProductOverviewModel(product); //price if (request.PreparePriceModel) { model.ProductPrice = await PreparePriceModel(product, res, request.ForceRedirectionAfterAddingToCart, enableShoppingCart, displayPrices, enableWishlist, priceIncludesTax); } //picture if (request.PreparePictureModel) { var pictureModels = await PreparePictureModel(product, model.Name, res, pictureSize); model.DefaultPictureModel = pictureModels.FirstOrDefault(); if (pictureModels.Count > 1) { model.SecondPictureModel = pictureModels.ElementAtOrDefault(1); } } //specs if (request.PrepareSpecificationAttributes && product.ProductSpecificationAttributes.Any()) { model.SpecificationAttributeModels = await _mediator.Send(new GetProductSpecification() { Language = _workContext.WorkingLanguage, Product = product }); } //attributes model.ProductAttributeModels = await PrepareAttributesModel(product); //reviews model.ReviewOverviewModel = await _mediator.Send(new GetProductReviewOverview() { Product = product, Language = _workContext.WorkingLanguage, Store = _workContext.CurrentStore }); return(model); }
private async Task <ProductOverviewModel> GetProductOverviewModel(Product product, GetProductOverview request, bool displayPrices, bool enableShoppingCart, bool enableWishlist, int pictureSize, bool priceIncludesTax, Dictionary <string, string> res) { // if (!string.IsNullOrEmpty(product.UseWith)) // { // var relates = product.UseWith.Split(";"); // foreach (var relate in relates) // { // var products = await _productService.GetAllProductsDisplayedOnHomePage(); // // product.RelatedProducts.Add(new RelatedProduct { // ProductId1 = products.FirstOrDefault(x => x.ImportId == relate)?.Id // }); // } // } var model = PrepareProductOverviewModel(product); //model.product.UseWith; //price if (request.PreparePriceModel) { model.ProductPrice = await PreparePriceModel(product, res, request.ForceRedirectionAfterAddingToCart, enableShoppingCart, displayPrices, enableWishlist, priceIncludesTax); } //picture if (request.PreparePictureModel) { var pictureModels = await PreparePictureModel(product, model.Name, res, pictureSize); model.DefaultPictureModel = pictureModels.FirstOrDefault(); if (pictureModels.Count > 1) { model.SecondPictureModel = pictureModels.ElementAtOrDefault(1); } } //specs if (request.PrepareSpecificationAttributes && product.ProductSpecificationAttributes.Any()) { model.SpecificationAttributeModels = await _mediator.Send(new GetProductSpecification() { Language = _workContext.WorkingLanguage, Product = product }); } //attributes model.ProductAttributeModels = await PrepareAttributesModel(product); //reviews model.ReviewOverviewModel = await _mediator.Send(new GetProductReviewOverview() { Product = product, Language = _workContext.WorkingLanguage, Store = _storeContext.CurrentStore }); return(model); }