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