public async Task <IResultResponse> Handle(AddOrderCommand request, CancellationToken cancellationToken) { ResultResponse result = new ResultResponse(); var validator = await new AddOrderCommandValidator(_uow).ValidateAsync(request); if (!validator.IsValid) { result.AddMessage(validator.Errors); return(result); } decimal orderValueTotal = await _productService.CalculateOrderTotalValue(request.OrderItems); Order order = await _orderService.AddOrder(orderValueTotal); foreach (var item in request.OrderItems) { decimal OrderItemvalueTotal = await _productService.CalculateOrderItemTotalValue(item); await _orderItemService.AddOrderItem(order, item, OrderItemvalueTotal); } await _uow.SaveChange(); await _orderUserService.Add(order.OrderID, request.UserID); return(result); }