public async Task <IActionResult> PostOrderRouteAsync( [FromBody] OrderForCreationUiModel orderForCreationUiModel) { var userAudit = await _inquiryUserProcessor.GetUserByUserIdAsync(GetUserIdFromClaims()); if (userAudit == null) { return(BadRequest("ERROR_ORDER_USER_NOT_EXIST")); } var newCreatedOrder = await _createOrderProcessor.CreateOrderAsync(GetUserIdFromClaims(), orderForCreationUiModel); switch (newCreatedOrder.Message) { case ("SUCCESS_CREATION"): { Log.Information( $"--Method:PostOrderRouteAsync -- Message:ORDER_CREATION_SUCCESSFULLY -- " + $"Datetime:{DateTime.Now}"); return(Created(nameof(PostOrderRouteAsync), newCreatedOrder)); } case ("UNKNOWN_ERROR"): { Log.Error( $"--Method:PostOrderRouteAsync -- Message:ERROR_CREATION_NEW_ORDER -- " + $"Datetime:{DateTime.Now}"); return(BadRequest(new { errorMessage = "ERROR_CREATION_NEW_ORDER" })); } } return(NotFound()); }
public Task <OrderUiModel> CreateOrderAsync(Guid idUser, OrderForCreationUiModel orderForCreationUiModel) { var response = new OrderUiModel() { Message = "START_CREATION" }; if (orderForCreationUiModel == null) { response.Message = "ERROR_INVALID_ORDER_MODEL"; return(Task.Run(() => response)); } var orderToBeCreated = new Order(); try { orderToBeCreated.InjectWithInitialAttributes( $"New order for Products:{orderForCreationUiModel.Products.Count}"); var userToBeInjected = _userRepository.FindBy(idUser); orderToBeCreated.InjectWithUser(userToBeInjected); foreach (var product in orderForCreationUiModel.Products) { var productToBeInjected = _productRepository.FindBy(product.ProductId); if (productToBeInjected != null) { OrderItem newOrderItemToBeInjected = new OrderItem() { Product = productToBeInjected, Quantity = product.ProductQty }; orderToBeCreated.InjectedWithOrderItem(newOrderItemToBeInjected); orderToBeCreated.CalcNewTotals(product.ProductQty, productToBeInjected.Price); } } MakeOrderPersistent(orderToBeCreated); response = _autoMapper.Map <OrderUiModel>(_orderRepository.FindOrderForUserByOrderId(idUser, orderToBeCreated.Id)); response.Message = "SUCCESS_CREATION"; } catch (Exception exxx) { response.Message = "UNKNOWN_ERROR"; Log.Error( $"Create Order" + $"--CreateOrder-- @fail@ [CreateOrderProcessor]. " + $"@innerfault:{exxx.Message} and {exxx.InnerException}"); } return(Task.Run(() => response)); }