Ejemplo n.º 1
0
 public CustomDataController(ICustomFieldService customFieldService, ICustomDataService customDataService, ICustomListService customListService, IUnitOfWorkAsync unitOfWork)
 {
     _customDataService  = customDataService;
     _customListService  = customListService;
     _customFieldService = customFieldService;
     _unitOfWork         = unitOfWork;
 }
Ejemplo n.º 2
0
 public ApprovalController(ICustomFieldService customFieldService, ICustomListDataService customListDataService, ICustomGroupService customGroupService, IBaseDataService baseDataService, ICustomDataService customDataService, ICustomListService customListService, ICustomFieldTypeService customFieldTypeService, IProjectService projectService, IApprovalService approvalService, IUnitOfWorkAsync unitOfWork)
 {
     _approvalService        = approvalService;
     _customDataService      = customDataService;
     _customFieldTypeService = customFieldTypeService;
     _baseDataService        = baseDataService;
     _customGroupService     = customGroupService;
     _customListDataService  = customListDataService;
     _customListService      = customListService;
     _customFieldService     = customFieldService;
     _unitOfWork             = unitOfWork;
 }
Ejemplo n.º 3
0
 public ProductController(IProductService productService, 
     IProductTemplateService productTemplateService,
     ICategoryService categoryService, 
     IManufacturerService manufacturerService,
     ICustomerService customerService,
     IUrlRecordService urlRecordService, 
     IWorkContext workContext, 
     ILanguageService languageService, 
     ILocalizationService localizationService, 
     ILocalizedEntityService localizedEntityService,
     ISpecificationAttributeService specificationAttributeService, 
     IPictureService pictureService,
     ITaxCategoryService taxCategoryService, 
     IProductTagService productTagService,
     ICopyProductService copyProductService, 
     IPdfService pdfService,
     IExportManager exportManager, 
     IImportManager importManager,
     ICustomerActivityService customerActivityService,
     IPermissionService permissionService, 
     IAclService aclService,
     IStoreService storeService,
     IOrderService orderService,
     IStoreMappingService storeMappingService,
      IVendorService vendorService,
     IShippingService shippingService,
     IShipmentService shipmentService,
     ICurrencyService currencyService, 
     CurrencySettings currencySettings,
     IMeasureService measureService,
     MeasureSettings measureSettings,
     AdminAreaSettings adminAreaSettings,
     IDateTimeHelper dateTimeHelper,
     IDiscountService discountService,
     IProductAttributeService productAttributeService,
     IBackInStockSubscriptionService backInStockSubscriptionService,
     IShoppingCartService shoppingCartService,
     IProductAttributeFormatter productAttributeFormatter,
     IProductAttributeParser productAttributeParser,
     IDownloadService downloadService,
     ICustomDataService customDataService
     )
 {
     this._productService = productService;
     this._productTemplateService = productTemplateService;
     this._categoryService = categoryService;
     this._manufacturerService = manufacturerService;
     this._customerService = customerService;
     this._urlRecordService = urlRecordService;
     this._workContext = workContext;
     this._languageService = languageService;
     this._localizationService = localizationService;
     this._localizedEntityService = localizedEntityService;
     this._specificationAttributeService = specificationAttributeService;
     this._pictureService = pictureService;
     this._taxCategoryService = taxCategoryService;
     this._productTagService = productTagService;
     this._copyProductService = copyProductService;
     this._pdfService = pdfService;
     this._exportManager = exportManager;
     this._importManager = importManager;
     this._customerActivityService = customerActivityService;
     this._permissionService = permissionService;
     this._aclService = aclService;
     this._storeService = storeService;
     this._orderService = orderService;
     this._storeMappingService = storeMappingService;
     this._vendorService = vendorService;
     this._shippingService = shippingService;
     this._shipmentService = shipmentService;
     this._currencyService = currencyService;
     this._currencySettings = currencySettings;
     this._measureService = measureService;
     this._measureSettings = measureSettings;
     this._adminAreaSettings = adminAreaSettings;
     this._dateTimeHelper = dateTimeHelper;
     this._discountService = discountService;
     this._productAttributeService = productAttributeService;
     this._backInStockSubscriptionService = backInStockSubscriptionService;
     this._shoppingCartService = shoppingCartService;
     this._productAttributeFormatter = productAttributeFormatter;
     this._productAttributeParser = productAttributeParser;
     this._downloadService = downloadService;
     this._customDataService = customDataService;
 }
Ejemplo n.º 4
0
 public CatalogController(ICategoryService categoryService, 
     IManufacturerService manufacturerService,
     IProductService productService, 
     IVendorService vendorService,
     ICategoryTemplateService categoryTemplateService,
     IManufacturerTemplateService manufacturerTemplateService,
     IWorkContext workContext, 
     IStoreContext storeContext,
     ITaxService taxService, 
     ICurrencyService currencyService,
     IPictureService pictureService, 
     ILocalizationService localizationService,
     IPriceCalculationService priceCalculationService,
     IPriceFormatter priceFormatter,
     IWebHelper webHelper, 
     ISpecificationAttributeService specificationAttributeService,
     IProductTagService productTagService,
     IGenericAttributeService genericAttributeService,
     IAclService aclService,
     IStoreMappingService storeMappingService,
     IPermissionService permissionService, 
     ICustomerActivityService customerActivityService,
     ITopicService topicService,
     IEventPublisher eventPublisher,
     ISearchTermService searchTermService,
     MediaSettings mediaSettings,
     CatalogSettings catalogSettings,
     VendorSettings vendorSettings,
     BlogSettings blogSettings,
     ForumSettings  forumSettings,
     ICacheManager cacheManager,
     ICustomDataService customDataService,
     IMeasureService measureService,
     ICustomerService customerService,
     CurrencySettings currencySettings,
     MeasureSettings measureSettings)
 {
     this._categoryService = categoryService;
     this._manufacturerService = manufacturerService;
     this._productService = productService;
     this._vendorService = vendorService;
     this._categoryTemplateService = categoryTemplateService;
     this._manufacturerTemplateService = manufacturerTemplateService;
     this._workContext = workContext;
     this._storeContext = storeContext;
     this._taxService = taxService;
     this._currencyService = currencyService;
     this._pictureService = pictureService;
     this._localizationService = localizationService;
     this._priceCalculationService = priceCalculationService;
     this._priceFormatter = priceFormatter;
     this._webHelper = webHelper;
     this._specificationAttributeService = specificationAttributeService;
     this._productTagService = productTagService;
     this._genericAttributeService = genericAttributeService;
     this._aclService = aclService;
     this._storeMappingService = storeMappingService;
     this._permissionService = permissionService;
     this._customerActivityService = customerActivityService;
     this._topicService = topicService;
     this._eventPublisher = eventPublisher;
     this._searchTermService = searchTermService;
     this._mediaSettings = mediaSettings;
     this._catalogSettings = catalogSettings;
     this._vendorSettings = vendorSettings;
     this._blogSettings = blogSettings;
     this._forumSettings = forumSettings;
     this._cacheManager = cacheManager;
     this._customDataService = customDataService;
     this._measureService = measureService;
     _customerService = customerService;
     this._currencySettings = currencySettings;
     this._measureSettings = measureSettings;
 }
        public static IEnumerable<ProductOverviewModel> PrepareProductOverviewModels(this Controller controller,
            IWorkContext workContext,
            IStoreContext storeContext,
            ICategoryService categoryService,
            IProductService productService,
            ISpecificationAttributeService specificationAttributeService,
            IPriceCalculationService priceCalculationService,
            IPriceFormatter priceFormatter,
            IPermissionService permissionService,
            ILocalizationService localizationService,
            ITaxService taxService,
            ICurrencyService currencyService,
            IPictureService pictureService,
            ICustomDataService customDataService,
            IWebHelper webHelper,
            ICacheManager cacheManager,
            CatalogSettings catalogSettings,
            MediaSettings mediaSettings,
            IEnumerable<Product> products,
            bool preparePriceModel = true, bool preparePictureModel = true,
            int? productThumbPictureSize = null, bool prepareSpecificationAttributes = false,
            bool forceRedirectionAfterAddingToCart = false)
        {
            if (products == null)
                throw new ArgumentNullException("products");

            var models = new List<ProductOverviewModel>();
            foreach (var product in products)
            {
                var model = new ProductOverviewModel
                {
                    Id = product.Id,
                    Name = product.GetLocalized(x => x.Name),
                    ShortDescription = product.GetLocalized(x => x.ShortDescription),
                    FullDescription = product.GetLocalized(x => x.FullDescription),
                    SeName = product.GetSeName(),
                    CreateDateUtc = product.CreatedOnUtc,
                    CircaDate = product.CircaDate,
                    DesignBy = product.DesignBy,
                    StockQuantity = product.StockQuantity,

                };
                // style
                var style = customDataService.GetCustomDataByValue("Style", product.Style);
                model.Style = style != null ? style.Value : "";
                //price
                if (preparePriceModel)
                {
                    #region Prepare product price

                    var priceModel = new ProductOverviewModel.ProductPriceModel
                    {
                        ForceRedirectionAfterAddingToCart = forceRedirectionAfterAddingToCart
                    };

                    switch (product.ProductType)
                    {
                        case ProductType.GroupedProduct:
                            {
                                #region Grouped product

                                var associatedProducts = productService.GetAssociatedProducts(product.Id, storeContext.CurrentStore.Id);

                                switch (associatedProducts.Count)
                                {
                                    case 0:
                                        {
                                            //no associated products
                                            //priceModel.DisableBuyButton = true;
                                            //priceModel.DisableWishlistButton = true;
                                            //compare products
                                            priceModel.DisableAddToCompareListButton = !catalogSettings.CompareProductsEnabled;
                                            //priceModel.AvailableForPreOrder = false;
                                        }
                                        break;
                                    default:
                                        {
                                            //we have at least one associated product
                                            //priceModel.DisableBuyButton = true;
                                            //priceModel.DisableWishlistButton = true;
                                            //compare products
                                            priceModel.DisableAddToCompareListButton = !catalogSettings.CompareProductsEnabled;
                                            //priceModel.AvailableForPreOrder = false;

                                            if (permissionService.Authorize(StandardPermissionProvider.DisplayPrices))
                                            {
                                                //find a minimum possible price
                                                decimal? minPossiblePrice = null;
                                                Product minPriceProduct = null;
                                                foreach (var associatedProduct in associatedProducts)
                                                {
                                                    //calculate for the maximum quantity (in case if we have tier prices)
                                                    var tmpPrice = priceCalculationService.GetFinalPrice(associatedProduct,
                                                        workContext.CurrentCustomer, decimal.Zero, true, int.MaxValue);
                                                    if (!minPossiblePrice.HasValue || tmpPrice < minPossiblePrice.Value)
                                                    {
                                                        minPriceProduct = associatedProduct;
                                                        minPossiblePrice = tmpPrice;
                                                    }
                                                }
                                                if (minPriceProduct != null && !minPriceProduct.CustomerEntersPrice)
                                                {
                                                    if (minPriceProduct.CallForPrice)
                                                    {
                                                        priceModel.OldPrice = null;
                                                        priceModel.Price = localizationService.GetResource("Products.CallForPrice");
                                                    }
                                                    else if (minPossiblePrice.HasValue)
                                                    {
                                                        //calculate prices
                                                        decimal taxRate;
                                                        decimal finalPriceBase = taxService.GetProductPrice(minPriceProduct, minPossiblePrice.Value, out taxRate);
                                                        decimal finalPrice = currencyService.ConvertFromPrimaryStoreCurrency(finalPriceBase, workContext.WorkingCurrency);

                                                        priceModel.OldPrice = null;
                                                        priceModel.Price = String.Format(localizationService.GetResource("Products.PriceRangeFrom"), priceFormatter.FormatPrice(finalPrice));

                                                    }
                                                    else
                                                    {
                                                        //Actually it's not possible (we presume that minimalPrice always has a value)
                                                        //We never should get here
                                                        Debug.WriteLine("Cannot calculate minPrice for product #{0}", product.Id);
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                //hide prices
                                                priceModel.OldPrice = null;
                                                priceModel.Price = null;
                                            }
                                        }
                                        break;
                                }

                                #endregion
                            }
                            break;
                        case ProductType.SimpleProduct:
                        default:
                            {
                                #region Simple product

                                //add to cart button
                                priceModel.DisableBuyButton = product.DisableBuyButton ||
                                    !permissionService.Authorize(StandardPermissionProvider.EnableShoppingCart) ||
                                    !permissionService.Authorize(StandardPermissionProvider.DisplayPrices);

                                //add to wishlist button
                                priceModel.DisableWishlistButton = product.DisableWishlistButton ||
                                    !permissionService.Authorize(StandardPermissionProvider.EnableWishlist) ||
                                    !permissionService.Authorize(StandardPermissionProvider.DisplayPrices);
                                //compare products
                                priceModel.DisableAddToCompareListButton = !catalogSettings.CompareProductsEnabled;

                                //rental
                                priceModel.IsRental = product.IsRental;

                                //pre-order
                                if (product.AvailableForPreOrder)
                                {
                                    priceModel.AvailableForPreOrder = !product.PreOrderAvailabilityStartDateTimeUtc.HasValue ||
                                        product.PreOrderAvailabilityStartDateTimeUtc.Value >= DateTime.UtcNow;
                                    priceModel.PreOrderAvailabilityStartDateTimeUtc = product.PreOrderAvailabilityStartDateTimeUtc;
                                }

                                //prices
                                if (permissionService.Authorize(StandardPermissionProvider.DisplayPrices))
                                {
                                    if (!product.CustomerEntersPrice)
                                    {
                                        if (product.CallForPrice)
                                        {
                                            //call for price
                                            priceModel.OldPrice = null;
                                            priceModel.Price = localizationService.GetResource("Products.CallForPrice");
                                        }
                                        else
                                        {
                                            //prices

                                            //calculate for the maximum quantity (in case if we have tier prices)
                                            decimal minPossiblePrice = priceCalculationService.GetFinalPrice(product,
                                                workContext.CurrentCustomer, decimal.Zero, true, int.MaxValue);

                                            decimal taxRate;
                                            decimal oldPriceBase = taxService.GetProductPrice(product, product.OldPrice, out taxRate);
                                            decimal finalPriceBase = taxService.GetProductPrice(product, minPossiblePrice, out taxRate);

                                            decimal oldPrice = currencyService.ConvertFromPrimaryStoreCurrency(oldPriceBase, workContext.WorkingCurrency);
                                            decimal finalPrice = currencyService.ConvertFromPrimaryStoreCurrency(finalPriceBase, workContext.WorkingCurrency);

                                            //do we have tier prices configured?
                                            var tierPrices = new List<TierPrice>();
                                            if (product.HasTierPrices)
                                            {
                                                tierPrices.AddRange(product.TierPrices
                                                    .OrderBy(tp => tp.Quantity)
                                                    .ToList()
                                                    .FilterByStore(storeContext.CurrentStore.Id)
                                                    .FilterForCustomer(workContext.CurrentCustomer)
                                                    .RemoveDuplicatedQuantities());
                                            }
                                            //When there is just one tier (with  qty 1),
                                            //there are no actual savings in the list.
                                            bool displayFromMessage = tierPrices.Count > 0 &&
                                                !(tierPrices.Count == 1 && tierPrices[0].Quantity <= 1);
                                            if (displayFromMessage)
                                            {
                                                priceModel.OldPrice = null;
                                                priceModel.Price = String.Format(localizationService.GetResource("Products.PriceRangeFrom"), priceFormatter.FormatPrice(finalPrice));
                                            }
                                            else
                                            {
                                                if (finalPriceBase != oldPriceBase && oldPriceBase != decimal.Zero)
                                                {
                                                    priceModel.OldPrice = priceFormatter.FormatPrice(oldPrice);
                                                    priceModel.Price = priceFormatter.FormatPrice(finalPrice);
                                                }
                                                else
                                                {
                                                    priceModel.OldPrice = null;
                                                    priceModel.Price = priceFormatter.FormatPrice(finalPrice);
                                                }
                                            }
                                            if (product.IsRental)
                                            {
                                                //rental product
                                                priceModel.OldPrice = priceFormatter.FormatRentalProductPeriod(product, priceModel.OldPrice);
                                                priceModel.Price = priceFormatter.FormatRentalProductPeriod(product, priceModel.Price);
                                            }

                                            //property for German market
                                            //we display tax/shipping info only with "shipping enabled" for this product
                                            //we also ensure this it's not free shipping
                                            priceModel.DisplayTaxShippingInfo = catalogSettings.DisplayTaxShippingInfoProductBoxes
                                                && product.IsShipEnabled &&
                                                !product.IsFreeShipping;
                                        }
                                    }
                                }
                                else
                                {
                                    //hide prices
                                    priceModel.OldPrice = null;
                                    priceModel.Price = null;
                                }

                                #endregion
                            }
                            break;
                    }

                    model.ProductPrice = priceModel;

                    #endregion
                }

                //picture
                if (preparePictureModel)
                {
                    #region Prepare product picture

                    //If a size has been set in the view, we use it in priority
                    int pictureSize = productThumbPictureSize.HasValue ? productThumbPictureSize.Value : mediaSettings.ProductThumbPictureSize;
                    //prepare picture model
                    var defaultProductPictureCacheKey = string.Format(ModelCacheEventConsumer.PRODUCT_DEFAULTPICTURE_MODEL_KEY, product.Id, pictureSize, true, workContext.WorkingLanguage.Id, webHelper.IsCurrentConnectionSecured(), storeContext.CurrentStore.Id);
                    model.DefaultPictureModel = cacheManager.Get(defaultProductPictureCacheKey, () =>
                    {
                        var picture = pictureService.GetPicturesByProductId(product.Id, 1).FirstOrDefault();
                        var pictureModel = new PictureModel
                        {
                            ImageUrl = pictureService.GetPictureUrl(picture, pictureSize),
                            FullSizeImageUrl = pictureService.GetPictureUrl(picture)
                        };
                        //"title" attribute
                        pictureModel.Title = (picture != null && !string.IsNullOrEmpty(picture.TitleAttribute)) ?
                            picture.TitleAttribute :
                            string.Format(localizationService.GetResource("Media.Product.ImageLinkTitleFormat"), model.Name);
                        //"alt" attribute
                        pictureModel.AlternateText = (picture != null && !string.IsNullOrEmpty(picture.AltAttribute)) ?
                            picture.AltAttribute :
                            string.Format(localizationService.GetResource("Media.Product.ImageAlternateTextFormat"), model.Name);

                        return pictureModel;
                    });

                    #endregion
                }

                //specs
                if (prepareSpecificationAttributes)
                {
                    model.SpecificationAttributeModels = PrepareProductSpecificationModel(controller, workContext,
                         specificationAttributeService, cacheManager, product);
                }

                //reviews
                model.ReviewOverviewModel = new ProductReviewOverviewModel
                {
                    ProductId = product.Id,
                    RatingSum = product.ApprovedRatingSum,
                    TotalReviews = product.ApprovedTotalReviews,
                    AllowCustomerReviews = product.AllowCustomerReviews
                };

                models.Add(model);
            }
            return models;
        }
Ejemplo n.º 6
0
 public ProductController(ICategoryService categoryService, 
     IManufacturerService manufacturerService,
     IProductService productService, 
     IVendorService vendorService,
     IProductTemplateService productTemplateService,
     IProductAttributeService productAttributeService,
     IWorkContext workContext, 
     IStoreContext storeContext,
     ITaxService taxService, 
     ICurrencyService currencyService,
     IPictureService pictureService, 
     ILocalizationService localizationService,
     IMeasureService measureService,
     IPriceCalculationService priceCalculationService,
     IPriceFormatter priceFormatter,
     IWebHelper webHelper, 
     ISpecificationAttributeService specificationAttributeService,
     IDateTimeHelper dateTimeHelper,
     IRecentlyViewedProductsService recentlyViewedProductsService,
     ICompareProductsService compareProductsService,
     IWorkflowMessageService workflowMessageService, 
     IProductTagService productTagService,
     IOrderReportService orderReportService, 
     IAclService aclService,
     IStoreMappingService storeMappingService,
     IPermissionService permissionService, 
     ICustomerActivityService customerActivityService,
     IProductAttributeParser productAttributeParser,
     IShippingService shippingService,
     IEventPublisher eventPublisher,
     MediaSettings mediaSettings,
     CatalogSettings catalogSettings,
     VendorSettings vendorSettings,
     ShoppingCartSettings shoppingCartSettings,
     LocalizationSettings localizationSettings, 
     CustomerSettings customerSettings, 
     CaptchaSettings captchaSettings,
     SeoSettings seoSettings,
     ICacheManager cacheManager,
     IVendorService venderService,
     ICustomDataService customDataService,
     INewsLetterSubscriptionService newsLetterSubscriptionService
     )
 {
     this._categoryService = categoryService;
     this._manufacturerService = manufacturerService;
     this._productService = productService;
     this._vendorService = vendorService;
     this._productTemplateService = productTemplateService;
     this._productAttributeService = productAttributeService;
     this._workContext = workContext;
     this._storeContext = storeContext;
     this._taxService = taxService;
     this._currencyService = currencyService;
     this._pictureService = pictureService;
     this._localizationService = localizationService;
     this._measureService = measureService;
     this._priceCalculationService = priceCalculationService;
     this._priceFormatter = priceFormatter;
     this._webHelper = webHelper;
     this._specificationAttributeService = specificationAttributeService;
     this._dateTimeHelper = dateTimeHelper;
     this._recentlyViewedProductsService = recentlyViewedProductsService;
     this._compareProductsService = compareProductsService;
     this._workflowMessageService = workflowMessageService;
     this._productTagService = productTagService;
     this._orderReportService = orderReportService;
     this._aclService = aclService;
     this._storeMappingService = storeMappingService;
     this._permissionService = permissionService;
     this._customerActivityService = customerActivityService;
     this._productAttributeParser = productAttributeParser;
     this._shippingService = shippingService;
     this._eventPublisher = eventPublisher;
     this._mediaSettings = mediaSettings;
     this._catalogSettings = catalogSettings;
     this._vendorSettings = vendorSettings;
     this._shoppingCartSettings = shoppingCartSettings;
     this._localizationSettings = localizationSettings;
     this._customerSettings = customerSettings;
     this._captchaSettings = captchaSettings;
     this._seoSettings = seoSettings;
     this._cacheManager = cacheManager;
     this._venderService = venderService;
     this._customDataService = customDataService;
     this._newsLetterSubscriptionService = newsLetterSubscriptionService;
 }