Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Nop.Core;
- using Nop.Core.Caching;
- using Nop.Core.Domain.Catalog;
- using Nop.Core.Domain.Customers;
- using Nop.Core.Domain.Media;
- using Nop.Core.Domain.Orders;
- using Nop.Core.Domain.Seo;
- using Nop.Core.Domain.Vendors;
- using Nop.Services.Catalog;
- using Nop.Services.Directory;
- using Nop.Services.Helpers;
- using Nop.Services.Localization;
- using Nop.Services.Media;
- using Nop.Services.Security;
- using Nop.Services.Shipping.Date;
- using Nop.Services.Stores;
- using Nop.Services.Tax;
- using Nop.Services.Vendors;
- using Nop.Web.Factories;
- using Nop.Web.Framework.Mvc.Models;
- using Nop.Web.Framework.Security.Captcha;
- using Nop.Web.Models.Catalog;
- using System.Collections.Generic;
- using System.Linq;
- namespace Nop.Web.Features
- {
- public class CustomProductModelFactory : ProductModelFactory
- {
- private readonly IAclService _aclService;
- private readonly ICompareProductsService _compareProductsService;
- private readonly IStoreMappingService _storeMappingService;
- public CustomProductModelFactory(
- ISpecificationAttributeService specificationAttributeService, 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, IDateTimeHelper dateTimeHelper,
- IProductTagService productTagService, IAclService aclService, IStoreMappingService storeMappingService,
- IPermissionService permissionService, IDownloadService downloadService, IProductAttributeParser productAttributeParser,
- IDateRangeService dateRangeService, MediaSettings mediaSettings, CatalogSettings catalogSettings,
- VendorSettings vendorSettings, CustomerSettings customerSettings, CaptchaSettings captchaSettings,
- OrderSettings orderSettings, SeoSettings seoSettings, IStaticCacheManager cacheManager,
- ICompareProductsService compareProductsService)
- : base(specificationAttributeService, categoryService, manufacturerService,
- productService, vendorService, productTemplateService,
- productAttributeService, workContext, storeContext,
- taxService, currencyService, pictureService,
- localizationService, measureService, priceCalculationService,
- priceFormatter, webHelper, dateTimeHelper,
- productTagService, aclService, storeMappingService,
- permissionService, downloadService, productAttributeParser,
- dateRangeService, mediaSettings, catalogSettings,
- vendorSettings, customerSettings, captchaSettings,
- orderSettings, seoSettings, cacheManager)
- {
- _aclService = aclService;
- _compareProductsService = compareProductsService;
- _storeMappingService = storeMappingService;
- }
- public override ProductDetailsModel PrepareProductDetailsModel(Product product,
- ShoppingCartItem updatecartitem = null, bool isAssociatedProduct = false)
- {
- var model = base.PrepareProductDetailsModel(product, updatecartitem, isAssociatedProduct);
- AddProductMetaData(model.Id, model);
- return model;
- }
- public override IEnumerable<ProductOverviewModel> PrepareProductOverviewModels(IEnumerable<Product> products,
- bool preparePriceModel = true, bool preparePictureModel = true, int? productThumbPictureSize = null,
- bool prepareSpecificationAttributes = false, bool forceRedirectionAfterAddingToCart = false)
- {
- var models = base.PrepareProductOverviewModels(products,
- preparePriceModel, preparePictureModel, productThumbPictureSize,
- prepareSpecificationAttributes, forceRedirectionAfterAddingToCart);
- foreach (var model in models)
- {
- AddProductMetaData(model.Id, model);
- }
- return models;
- }
- private void AddProductMetaData(int productId, BaseNopModel model)
- {
- var products = _compareProductsService.GetComparedProducts()
- .Where(p => _aclService.Authorize(p) && _storeMappingService.Authorize(p))
- .Where(p => p.IsAvailable())
- .ToList();
- model.CustomProperties["InCompareList"] = products.Any(p => p.Id == productId)
- ? "in-compare-list" : string.Empty;
- }
- }
- }
Add Comment
Please, Sign In to add comment