Guest User

Untitled

a guest
Apr 20th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.84 KB | None | 0 0
  1. using Nop.Core;
  2. using Nop.Core.Caching;
  3. using Nop.Core.Domain.Catalog;
  4. using Nop.Core.Domain.Customers;
  5. using Nop.Core.Domain.Media;
  6. using Nop.Core.Domain.Orders;
  7. using Nop.Core.Domain.Seo;
  8. using Nop.Core.Domain.Vendors;
  9. using Nop.Services.Catalog;
  10. using Nop.Services.Directory;
  11. using Nop.Services.Helpers;
  12. using Nop.Services.Localization;
  13. using Nop.Services.Media;
  14. using Nop.Services.Security;
  15. using Nop.Services.Shipping.Date;
  16. using Nop.Services.Stores;
  17. using Nop.Services.Tax;
  18. using Nop.Services.Vendors;
  19. using Nop.Web.Factories;
  20. using Nop.Web.Framework.Mvc.Models;
  21. using Nop.Web.Framework.Security.Captcha;
  22. using Nop.Web.Models.Catalog;
  23. using System.Collections.Generic;
  24. using System.Linq;
  25.  
  26. namespace Nop.Web.Features
  27. {
  28. public class CustomProductModelFactory : ProductModelFactory
  29. {
  30. private readonly IAclService _aclService;
  31. private readonly ICompareProductsService _compareProductsService;
  32. private readonly IStoreMappingService _storeMappingService;
  33.  
  34. public CustomProductModelFactory(
  35. ISpecificationAttributeService specificationAttributeService, ICategoryService categoryService, IManufacturerService manufacturerService,
  36. IProductService productService, IVendorService vendorService, IProductTemplateService productTemplateService,
  37. IProductAttributeService productAttributeService, IWorkContext workContext, IStoreContext storeContext,
  38. ITaxService taxService, ICurrencyService currencyService, IPictureService pictureService,
  39. ILocalizationService localizationService, IMeasureService measureService, IPriceCalculationService priceCalculationService,
  40. IPriceFormatter priceFormatter, IWebHelper webHelper, IDateTimeHelper dateTimeHelper,
  41. IProductTagService productTagService, IAclService aclService, IStoreMappingService storeMappingService,
  42. IPermissionService permissionService, IDownloadService downloadService, IProductAttributeParser productAttributeParser,
  43. IDateRangeService dateRangeService, MediaSettings mediaSettings, CatalogSettings catalogSettings,
  44. VendorSettings vendorSettings, CustomerSettings customerSettings, CaptchaSettings captchaSettings,
  45. OrderSettings orderSettings, SeoSettings seoSettings, IStaticCacheManager cacheManager,
  46. ICompareProductsService compareProductsService)
  47. : base(specificationAttributeService, categoryService, manufacturerService,
  48. productService, vendorService, productTemplateService,
  49. productAttributeService, workContext, storeContext,
  50. taxService, currencyService, pictureService,
  51. localizationService, measureService, priceCalculationService,
  52. priceFormatter, webHelper, dateTimeHelper,
  53. productTagService, aclService, storeMappingService,
  54. permissionService, downloadService, productAttributeParser,
  55. dateRangeService, mediaSettings, catalogSettings,
  56. vendorSettings, customerSettings, captchaSettings,
  57. orderSettings, seoSettings, cacheManager)
  58. {
  59. _aclService = aclService;
  60. _compareProductsService = compareProductsService;
  61. _storeMappingService = storeMappingService;
  62. }
  63.  
  64. public override ProductDetailsModel PrepareProductDetailsModel(Product product,
  65. ShoppingCartItem updatecartitem = null, bool isAssociatedProduct = false)
  66. {
  67. var model = base.PrepareProductDetailsModel(product, updatecartitem, isAssociatedProduct);
  68.  
  69. AddProductMetaData(model.Id, model);
  70.  
  71. return model;
  72. }
  73.  
  74. public override IEnumerable<ProductOverviewModel> PrepareProductOverviewModels(IEnumerable<Product> products,
  75. bool preparePriceModel = true, bool preparePictureModel = true, int? productThumbPictureSize = null,
  76. bool prepareSpecificationAttributes = false, bool forceRedirectionAfterAddingToCart = false)
  77. {
  78. var models = base.PrepareProductOverviewModels(products,
  79. preparePriceModel, preparePictureModel, productThumbPictureSize,
  80. prepareSpecificationAttributes, forceRedirectionAfterAddingToCart);
  81.  
  82. foreach (var model in models)
  83. {
  84. AddProductMetaData(model.Id, model);
  85. }
  86.  
  87. return models;
  88. }
  89.  
  90. private void AddProductMetaData(int productId, BaseNopModel model)
  91. {
  92. var products = _compareProductsService.GetComparedProducts()
  93. .Where(p => _aclService.Authorize(p) && _storeMappingService.Authorize(p))
  94. .Where(p => p.IsAvailable())
  95. .ToList();
  96.  
  97. model.CustomProperties["InCompareList"] = products.Any(p => p.Id == productId)
  98. ? "in-compare-list" : string.Empty;
  99. }
  100. }
  101. }
Add Comment
Please, Sign In to add comment