Beispiel #1
0
        public virtual IActionResult CustomLogoDelete(int id)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageProducts))
            {
                return(AccessDeniedView());
            }

            //try to get a product attribute value with the specified id
            var productAttributeValue = _productAttributeService.GetProductAttributeValueById(id)
                                        ?? throw new ArgumentException("No product attribute value found with the specified id");

            //try to get a product attribute mapping with the specified id
            var productAttributeMapping = _productAttributeService.GetProductAttributeMappingById(productAttributeValue.ProductAttributeMappingId)
                                          ?? throw new ArgumentException("No product attribute mapping found with the specified id");

            //try to get a product with the specified id
            var product = _productService.GetProductById(productAttributeMapping.ProductId)
                          ?? throw new ArgumentException("No product found with the specified id");


            _productAttributeService.DeleteProductAttributeValue(productAttributeValue);

            //Delete product picture after removing the product attribute
            ProductPicture productPicture = _productService.GetProductPicturesByProductId(product.Id)
                                            .FirstOrDefault(x => x.PictureId == productAttributeValue.PictureId);

            if (productPicture != null)
            {
                _productService.DeleteProductPicture(productPicture);
            }

            return(new NullJsonResult());
        }
        private void UpdateProductAttributeValues(ProductAttributeMappingDto productAttributeMappingDto, Delta <ProductDto> productDtoDelta)
        {
            // If no product attribute values are specified means we don't have to update anything
            if (productAttributeMappingDto.ProductAttributeValues == null)
            {
                return;
            }

            // delete unused product attribute values
            var toBeUpdatedIds = productAttributeMappingDto.ProductAttributeValues.Where(y => y.Id != 0).Select(x => x.Id);

            var unusedProductAttributeValues =
                _productAttributeService.GetProductAttributeValues(productAttributeMappingDto.Id).Where(x => !toBeUpdatedIds.Contains(x.Id)).ToList();

            foreach (var unusedProductAttributeValue in unusedProductAttributeValues)
            {
                _productAttributeService.DeleteProductAttributeValue(unusedProductAttributeValue);
            }

            foreach (var productAttributeValueDto in productAttributeMappingDto.ProductAttributeValues)
            {
                if (productAttributeValueDto.Id > 0)
                {
                    // update existing product attribute mapping
                    var productAttributeValueToUpdate = _productAttributeService.GetProductAttributeValueById(productAttributeValueDto.Id);
                    //var recordId = productAttributeValueToUpdate.GetAttribute<int>("nop.product.attributevalue.recordid");
                    if (productAttributeValueToUpdate != null)
                    {
                        productDtoDelta.Merge(productAttributeValueDto, productAttributeValueToUpdate, false);
                        if (productAttributeValueDto.ProductPictureId.HasValue)
                        {
                            productAttributeValueToUpdate.PictureId = productAttributeValueDto.ProductPictureId.Value;
                        }
                        else
                        {
                            productAttributeValueToUpdate.PictureId = 0;
                        }

                        _productAttributeService.UpdateProductAttributeValue(productAttributeValueToUpdate);
                    }
                }
                else
                {
                    var newProductAttributeValue = new ProductAttributeValue();
                    productDtoDelta.Merge(productAttributeValueDto, newProductAttributeValue);

                    newProductAttributeValue.ProductAttributeMappingId = productAttributeMappingDto.Id;
                    // add new product attribute value
                    _productAttributeService.InsertProductAttributeValue(newProductAttributeValue);
                    _genericAttributeService.SaveAttribute <int>(newProductAttributeValue, "nop.product.attributevalue.recordid", productAttributeValueDto.RecordId);
                }
            }
        }
        private void UpdateProductAttributeValues(ProductAttributeMappingDto productAttributeMappingDto, Delta <ProductDto> productDtoDelta)
        {
            // If no product attribute values are specified means we don't have to update anything
            if (productAttributeMappingDto.ProductAttributeValues == null)
            {
                return;
            }

            // delete unused product attribute values
            IEnumerable <int> toBeUpdatedIds = productAttributeMappingDto.ProductAttributeValues.Where(y => y.Id != 0).Select(x => x.Id);

            var unusedProductAttributeValues =
                _productAttributeService.GetProductAttributeValues(productAttributeMappingDto.Id).Where(x => !toBeUpdatedIds.Contains(x.Id)).ToList();;

            foreach (var unusedProductAttributeValue in unusedProductAttributeValues)
            {
                _productAttributeService.DeleteProductAttributeValue(unusedProductAttributeValue);
            }

            foreach (var productAttributeValueDto in productAttributeMappingDto.ProductAttributeValues)
            {
                if (productAttributeValueDto.Id > 0)
                {
                    // update existing product attribute mapping
                    var productAttributeValueToUpdate =
                        _productAttributeService.GetProductAttributeValueById(productAttributeValueDto.Id);
                    if (productAttributeValueToUpdate != null)
                    {
                        productDtoDelta.Merge(productAttributeValueDto, productAttributeValueToUpdate, false);

                        _productAttributeService.UpdateProductAttributeValue(productAttributeValueToUpdate);
                    }
                }
                else
                {
                    ProductAttributeValue newProductAttributeValue = new ProductAttributeValue();
                    productDtoDelta.Merge(productAttributeValueDto, newProductAttributeValue);

                    newProductAttributeValue.ProductAttributeMappingId = productAttributeMappingDto.Id;
                    // add new product attribute value
                    _productAttributeService.InsertProductAttributeValue(newProductAttributeValue);
                }
            }
        }
Beispiel #4
0
        public IActionResult CreateProductAttrs([ModelBinder(typeof(JsonModelBinder <CustomeProductAttributesDto>))] Delta <CustomeProductAttributesDto> customeProductAttributesDtoDelta)
        {
            // Here we display the errors if the validation has failed at some point.
            if (!ModelState.IsValid)
            {
                return(Error());
            }
            var list = _productAttributeService.GetAllProductAttributes().Select(l => l.Name.ToLower().Trim()).ToList();

            if (!list.Contains(customeProductAttributesDtoDelta.Dto.AttributeName.ToLower().Trim()))
            {
                var productAttribute = new ProductAttribute()
                {
                    Description = customeProductAttributesDtoDelta.Dto.Description,
                    Id          = 0,
                    Name        = customeProductAttributesDtoDelta.Dto.AttributeName
                };
                _productAttributeService.InsertProductAttribute(productAttribute);
                CustomerActivityService.InsertActivity("AddNewProductAttribute", LocalizationService.GetResource("ActivityLog.AddNewProductAttribute"), productAttribute);
            }
            //get Product By SKU
            var product = _productService.GetProductBySku(customeProductAttributesDtoDelta.Dto.Sku);

            if (product == null)
            {
                return(Error(HttpStatusCode.NotFound, "product", "not found"));
            }
            var attr = _productAttributeService.GetProductAttributeByAXId(customeProductAttributesDtoDelta.Dto.AttributeId);

            if (attr == null)
            {
                if (customeProductAttributesDtoDelta.Dto.Values.Count > 0)
                {
                    var prodAttr = _productAttributeService.GetProductAttributeByName(customeProductAttributesDtoDelta.Dto.AttributeName);
                    //create
                    var tempAttr = new ProductAttributeMapping()
                    {
                        AttrIdAX             = customeProductAttributesDtoDelta.Dto.AttributeId,
                        AttributeControlType = AttributeControlType.DropdownList,
                        ProductId            = product.Id,
                        ProductAttributeId   = prodAttr.Id,
                        IsRequired           = true,
                    };
                    _productAttributeService.InsertProductAttributeMapping(tempAttr);
                    //
                    foreach (var item in customeProductAttributesDtoDelta.Dto.Values)
                    {
                        _productAttributeService.InsertProductAttributeValue(new ProductAttributeValue()
                        {
                            Id = 0,
                            ProductAttributeMappingId = tempAttr.Id,
                            Name            = item.Text,
                            PriceAdjustment = item.Price,
                            DisplayOrder    = item.DisplayOrder,
                        });
                    }
                }
            }
            else
            {
                var prodAttr = _productAttributeService.GetProductAttributeByName(customeProductAttributesDtoDelta.Dto.AttributeName);
                if (customeProductAttributesDtoDelta.Dto.Values.Count == 0)
                {
                    _productAttributeService.DeleteProductAttributeMapping(attr);
                }
                else
                {
                    //edit
                    attr.ProductAttributeId = prodAttr.Id;
                    _productAttributeService.UpdateProductAttributeMapping(attr);
                    //
                    var listofValues = _productAttributeService.GetProductAttributeValues(attr.Id);
                    //delete
                    foreach (var item in listofValues)
                    {
                        _productAttributeService.DeleteProductAttributeValue(item);
                    }
                    foreach (var item in customeProductAttributesDtoDelta.Dto.Values)
                    {
                        _productAttributeService.InsertProductAttributeValue(new ProductAttributeValue()
                        {
                            Id = 0,
                            ProductAttributeMappingId = attr.Id,
                            Name            = item.Text,
                            PriceAdjustment = item.Price,
                            DisplayOrder    = item.DisplayOrder,
                        });
                    }
                }
            }

            var customeProductAttributesRootObjectDto = new CustomeProductAttributesRootObjectDto();

            customeProductAttributesRootObjectDto.ProductAttributes.Add(new CustomeProductAttributesDto()
            {
                AttributeId   = 123456,
                AttributeName = "Test",
                Description   = "Test",
                Sku           = "1200",
                Values        = new List <ValueDto>()
                {
                    new ValueDto()
                    {
                        DisplayOrder = 0,
                        Price        = 1222,
                        Text         = "Test"
                    }
                    ,
                    new ValueDto()
                    {
                        DisplayOrder = 0,
                        Price        = 1222,
                        Text         = "Test"
                    }
                }
            });

            var json = JsonFieldsSerializer.Serialize(customeProductAttributesRootObjectDto, string.Empty);

            return(new RawJsonActionResult("Done"));
        }