public async Task <IActionResult> PutProductRouteAsync(Guid id, [FromBody] ProductForModificationUiModel productForModificationUiModel) { var modifiedProduct = await _updateProductProcessor.UpdateProductAsync(id, productForModificationUiModel); switch (modifiedProduct.Message) { case ("SUCCESS_MODIFICATION"): { Log.Information( $"--Method:PutProductRouteAsync -- Message:Product_ACTIVATION_SUCCESSFULLY -- " + $"Datetime:{DateTime.Now} -- ProductInfo:{id} "); return(Ok(modifiedProduct)); } case ("ERROR_INVALID_PRODUCT_MODEL"): { return(BadRequest(new { errorMessage = "ERROR_INVALID_PRODUCT_MODEL" })); } case ("ERROR_PRODUCT_NOT_EXIST"): { return(BadRequest(new { errorMessage = "ERROR_PRODUCT_NOT_EXIST" })); } case ("ERROR_PRODUCT_NOT_MADE_PERSISTENT"): { return(BadRequest(new { errorMessage = "ERROR_PRODUCT_NOT_MADE_PERSISTENT" })); } case ("UNKNOWN_ERROR"): { return(BadRequest(new { errorMessage = "ERROR_ACTIVATION_PRODUCT" })); } } return(NotFound("MODIFICATION_FAILED")); }
public Task <ProductUiModel> UpdateProductAsync(Guid productIdToBeModified, ProductForModificationUiModel updatedProduct) { var response = new ProductUiModel() { Message = "SUCCESS_MODIFICATION" }; if (updatedProduct == null) { response.Message = "ERROR_INVALID_PRODUCT_MODEL"; return(Task.Run(() => response)); } if (productIdToBeModified == Guid.Empty) { response.Message = "ERROR_INVALID_PRODUCT_ID"; return(Task.Run(() => response)); } try { var productToBeModified = ThrowExceptionIfProductDoesNotExist(productIdToBeModified); productToBeModified.ModifyWith(updatedProduct.ProductName, updatedProduct.ProductDescription, updatedProduct.ProductPrice); Log.Debug( $"Update-Modify Product: with Id: {productIdToBeModified}" + "--UpdateProduct-- @Ready@ [UpdateProductAsync]. " + "Message: Just Before MakeItPersistence"); MakeProductPersistent(productToBeModified); Log.Debug( $"Update-Modify Product: with Id: {productIdToBeModified}" + "--UpdateProduct-- @Ready@ [UpdateProductAsync]. " + "Message: Just After MakeItPersistence"); response = ThrowExcIfModificationWasNotBeMadePersistent(productIdToBeModified); response.Message = "SUCCESS_MODIFICATION"; } catch (ProductDoesNotExistException e) { response.Message = "ERROR_PRODUCT_NOT_EXIST"; Log.Error( $"Modify Product: {updatedProduct.ProductName}" + "--ModifyProductAsync-- @fail@ [UpdateProductProcessor]." + $" @innerfault:{e?.Message} and {e?.InnerException}"); } catch (InvalidProductException e) { response.Message = "ERROR_INVALID_PRODUCT_MODEL"; Log.Error( $"Modify Product: {updatedProduct.ProductName}" + "--ModifyProductAsync-- @fail@ [UpdateProductProcessor]." + $" @innerfault:{e?.Message} and {e?.InnerException}"); } catch (ProductDoesNotExistAfterMadePersistentException e) { response.Message = "ERROR_MODIFICATION_NOT_MADE_PERSISTENT"; Log.Error( $"Modify Product: {updatedProduct.ProductName}" + "--ModifyProductAsync-- @fail@ [UpdateProductProcessor]." + $" @innerfault:{e?.Message} and {e?.InnerException}"); } catch (Exception e) { response.Message = "UNKNOWN_ERROR"; Log.Error( $"Modify Product: {updatedProduct.ProductName}" + "--ModifyProductAsync-- @fail@ [UpdateProductProcessor]." + $" @innerfault:{e?.Message} and {e?.InnerException}"); } return(Task.Run(() => response)); }