Пример #1
0
        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);
        }