public async Task <IActionResult> Create([FromBody] SavedProductResource savedProductResources) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var product = _mapper.Map <SavedProductResource, Product>(savedProductResources); await _unitOfWork.ProductRepository.AddAsync(product); if (!await _unitOfWork.CompleteAsync()) { _logger.LogMessage(LoggingEvents.SavedFail, ApplicationConstants.ControllerName.Product, product.Id); return(FailedToSave(product.Id)); } product = await _unitOfWork.ProductRepository.GetProduct(product.Id); var result = _mapper.Map <Product, ProductResource>(product); _logger.LogMessage(LoggingEvents.Created, ApplicationConstants.ControllerName.Product, product.Id); return(CreatedAtRoute(ApplicationConstants.ControllerName.Product, new { id = product.Id }, result)); }
public async Task <IActionResult> Update(string id, [FromBody] SavedProductResource savedProductResource) { bool isValid = Guid.TryParse(id, out var productId); if (!isValid) { return(InvalidId(id)); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var product = await _unitOfWork.ProductRepository.GetProduct(productId); if (product == null) { return(NotFound(productId)); } _mapper.Map <SavedProductResource, Product>(savedProductResource, product); if (!await _unitOfWork.CompleteAsync()) { _logger.LogMessage(LoggingEvents.SavedFail, ApplicationConstants.ControllerName.Product, product.Id); return(FailedToSave(product.Id)); } product = await _unitOfWork.ProductRepository.GetProduct(product.Id); var result = _mapper.Map <Product, ProductResource>(product); _logger.LogMessage(LoggingEvents.Updated, ApplicationConstants.ControllerName.Product, product.Id); return(Ok(result)); }