public async Task <ActionResult <ProductResource> > UpdateProduct(int id, [FromBody] SaveProductResource saveProductResource) { var validator = new SaveProductResourceValidator(); var validationResult = await validator.ValidateAsync(saveProductResource); var requestIsInvalid = id == 0 || !validationResult.IsValid; if (requestIsInvalid) { return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok } var productToBeUpdate = await _productService.GetProductById(id); if (productToBeUpdate == null) { return(NotFound()); } var product = _mapper.Map <SaveProductResource, Product>(saveProductResource); await _productService.UpdateProduct(productToBeUpdate, product); var updatedProduct = await _productService.GetProductById(id); var updatedProductResource = _mapper.Map <Product, ProductResource>(updatedProduct); return(Ok(updatedProductResource)); }
public async Task <ActionResult <ProductResource> > CreateProduct([FromBody] SaveProductResource saveProductResource) { var validator = new SaveProductResourceValidator(); var validationResult = await validator.ValidateAsync(saveProductResource); if (!validationResult.IsValid) { return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok } var productToCreate = _mapper.Map <SaveProductResource, Product>(saveProductResource); var newProduct = await _productService.CreateProduct(productToCreate); var product = await _productService.GetProductById(newProduct.ProductId); var productResource = _mapper.Map <Product, ProductResource>(product); return(Ok(productResource)); }