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); } } }
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")); }