public ActionResult <ProductForPostRequestDto> CreateProduct(ProductForPostRequestDto product) { var productDomain = _mapper.Map <ProductForPostRequestDto, Product>(product); var returnProduct = _productService.AddProduct(productDomain); return(Ok(_mapper.Map <Product, ProductForPostRequestDto>(returnProduct))); }
public ActionResult <ProductForPostRequestDto> UpdateProduct(int productId, ProductForPostRequestDto product) { if (productId == 0) { return(BadRequest()); } if (productId != product.ProductId) { return(BadRequest()); } var productToUpdate = _productService.GetProductById(productId); var attributes = new List <ProductAttribute>(); if (product.ProductAttributesDto.Count > 0) { productToUpdate.ProductAttributes.Clear(); foreach (var item in product.ProductAttributesDto) { var attribute = new ProductAttribute(); if (item.AttributeId > 0 && productToUpdate.ProductAttributes.Any(c => c.AttributeId == item.AttributeId)) { var attr = productToUpdate.ProductAttributes.FirstOrDefault(c => c.AttributeId == item.AttributeId); attr.AttributeLookup = new ProductAttributeLookup { AttributeName = item.AttributeName, ProdCatId = product.ProdCatId, }; attr.AttributeId = item.AttributeId; attr.AttributeValue = item.AttributeValue; attr.ProductId = item.ProductId; attr.Product = productToUpdate; } else { var attributeLookup = new ProductAttributeLookup { AttributeName = item.AttributeName, ProdCatId = product.ProdCatId, }; attribute.AttributeId = item.AttributeId; attribute.AttributeLookup = attributeLookup; attribute.AttributeValue = item.AttributeValue; attribute.Product = productToUpdate; attribute.ProductId = item.ProductId; productToUpdate.ProductAttributes.Add(attribute); } } } _productService.UpdateProduct(productToUpdate); return(Ok(product)); }