public IViewComponentResult Invoke(string widgetZone, object additionalData)
        {
            if (!(additionalData is ProductDetailsModel))
            {
                return(Content(""));
            }

            var product = (ProductDetailsModel)additionalData;

            //Get product attribute and mapping
            ProductAttribute productAttribute = _productPictureModifierService.
                                                GetProductAttributeByName(ProductPictureModifierDefault.ProductAttributeName).First();
            IList <ProductAttributeMapping> productAttributeMappings = _productAttributeService.
                                                                       GetProductAttributeMappingsByProductId(product.Id);

            ProductAttributeMapping productAttributeForCustomColorSelector = productAttributeMappings
                                                                             .FirstOrDefault(x => x.ProductAttributeId == productAttribute.Id);

            //the product does not support custom color selector
            if (productAttributeForCustomColorSelector == null)
            {
                return(Content(""));
            }

            var model = new ProductPictureModifierModel()
            {
                ColorCode = string.IsNullOrWhiteSpace(productAttributeForCustomColorSelector.DefaultValue) ?
                            ProductPictureModifierDefault.DefaultColorCode : productAttributeForCustomColorSelector.DefaultValue
            };

            return(View("~/Plugins/Widgets.ProductPictureModifier/Views/PublicProductDetailColorSelector.cshtml", model));
        }
Beispiel #2
0
        public IActionResult Create()
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageWidgets))
            {
                return(AccessDeniedView());
            }

            var model = new ProductPictureModifierModel()
            {
                ColorCode = ProductPictureModifierDefault.DefaultColorCode
            };

            return(View("~/Plugins/Widgets.ProductPictureModifier/Views/Admin/Create.cshtml", model));
        }
Beispiel #3
0
        public IActionResult Create(ProductPictureModifierModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageWidgets))
            {
                return(AccessDeniedView());
            }

            //todo find out why model state validation failed even though product id is only validated and model has product id
            if (model.ProductId < 1)
            {
                ModelState.AddModelError(nameof(model.ProductId),
                                         _localizationService.GetResource("Admin.Widgets.ProductPictureModifier.Fields.Product.Required"));
                return(View("~/Plugins/Widgets.ProductPictureModifier/Views/Admin/Create.cshtml", model));
            }

            ProductAttribute productAttribute = _productPictureModifierService.
                                                GetProductAttributeByName(ProductPictureModifierDefault.ProductAttributeName).First();

            var productAttributeMapping = new ProductAttributeMapping
            {
                ProductAttributeId     = productAttribute.Id,
                ProductId              = model.ProductId,
                DefaultValue           = model.ColorCode,
                AttributeControlTypeId = (int)AttributeControlType.TextBox
            };

            _productAttributeService.InsertProductAttributeMapping(productAttributeMapping);

            //Logo Default Value
            _logoPositionService.Insert(new LogoPosition
            {
                ProductId = model.ProductId,
                ColorCode = model.ColorCode
            });
            //Clear the cache for product picture preparation
            _cacheManager.RemoveByPattern(string.Format(ModelCacheEventConsumer.PRODUCT_DEFAULTPICTURE_PATTERN_KEY_BY_ID, model.ProductId));

            SuccessNotification(_localizationService.GetResource("Widgets.ProductPictureModifier.Mapping.Created"));

            if (!continueEditing)
            {
                return(RedirectToAction("Configure"));
            }

            return(RedirectToAction("Edit", new { id = productAttributeMapping.Id }));
        }
Beispiel #4
0
        public IActionResult Edit(ProductPictureModifierModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageWidgets))
            {
                return(AccessDeniedView());
            }

            //todo find out why model state validation failed even though product id is only validated and model has product id
            if (model.ProductId < 1)
            {
                ModelState.AddModelError(nameof(model.ProductId),
                                         _localizationService.GetResource("Admin.Widgets.ProductPictureModifier.Fields.Product.Required"));
                return(View("~/Plugins/Widgets.ProductPictureModifier/Views/Admin/Edit.cshtml", model));
            }

            ProductAttributeMapping productAttributeMapping = _productAttributeService.
                                                              GetProductAttributeMappingById(model.EntityId);

            productAttributeMapping.DefaultValue = model.ColorCode;
            _productAttributeService.UpdateProductAttributeMapping(productAttributeMapping);

            //Update logo setting
            LogoPosition existingLogoSetting = _logoPositionService.GetByProductId(productAttributeMapping.ProductId);

            existingLogoSetting.ColorCode = model.ColorCode;
            _logoPositionService.Update(existingLogoSetting);

            //Clear the cache for product picture preparation
            _cacheManager.RemoveByPattern(string.Format(ModelCacheEventConsumer.PRODUCT_DEFAULTPICTURE_PATTERN_KEY_BY_ID, model.ProductId));

            SuccessNotification(_localizationService.GetResource("Widgets.ProductPictureModifier.Mapping.Updated"));

            if (!continueEditing)
            {
                return(RedirectToAction("Configure"));
            }

            return(RedirectToAction("Edit", new { id = productAttributeMapping.Id }));
        }
Beispiel #5
0
        public IActionResult Edit(int id)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageWidgets))
            {
                return(AccessDeniedView());
            }

            ProductAttributeMapping productAttributeMapping = _productAttributeService.
                                                              GetProductAttributeMappingById(id);
            //_mediaSettings.ProductDetailsPictureSiz
            ProductPicture defaultProductPicture = _productPictureModifierService.GetFirstProductPicture(productAttributeMapping.ProductId);

            //Existing logoSetting
            LogoPosition existingLogoSetting = _logoPositionService.GetByProductId(productAttributeMapping.ProductId);

            var model = new ProductPictureModifierModel
            {
                CustomImagePath = defaultProductPicture == null ? "" : _pictureService.GetPictureUrl(defaultProductPicture.Picture),
                EntityId        = productAttributeMapping.Id,
                ProductId       = productAttributeMapping.ProductId,
                ProductName     = productAttributeMapping.Product.Name,
                ColorCode       = productAttributeMapping.DefaultValue,
                LogoModel       = new LogoModel()
                {
                    Opacity       = IsLogoSettingNew(existingLogoSetting) ? ProductPictureModifierDefault.LogoOpacity : existingLogoSetting.Opacity,
                    Size          = IsLogoSettingNew(existingLogoSetting) ? ProductPictureModifierDefault.LogoSizeInPercent : existingLogoSetting.Size,
                    XCoordinate   = existingLogoSetting.XCoordinate,
                    YCoordinate   = existingLogoSetting.YCoordinate,
                    MarkAsDefault = IsLogoSettingNew(existingLogoSetting)
                }
            };

            model.LogoSearchModel.SetGridPageSize();

            return(View("~/Plugins/Widgets.ProductPictureModifier/Views/Admin/Edit.cshtml", model));
        }