Пример #1
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }