Ejemplo n.º 1
0
        public async Task <int> Handle(AddOrderCommandModel request, CancellationToken cancellationToken)
        {
            var user = await userQueryService.GetRawByIdAsync(request.UserId);

            var productOrders = await productOrderQueryService.CreateAsync(request.Products);

            var shipment = await shipmentQueryService.GetRawAsync(request.ShipmentId);

            var orderDiscount = await orderDiscountQueryService.GetRawByCodeAsync(request.PromoCode);

            var address = await addressQueryService.GetAsync(request.Address, request.AddressId, request.UserId);

            var order = await orderCommandService.AddAsync(user, productOrders, shipment, orderDiscount, request.Comment, address);

            await emailService.SendNewOrderEmailAsync(mapper.Map <OrderDto>(order));

            return(order.Id);
        }
        public async Task <int> Handle(AddOrderCommandModel request, CancellationToken cancellationToken)
        {
            // on this level we have everything validated and checked => no validation here
            var user = await userQueryService.GetRawByIdAsync(request.UserId);

            var productOrders = await productOrderQueryService.CreateAsync(request.Products);

            var shipment = await shipmentQueryService.GetRawAsync(request.ShipmentId);

            var orderDiscount = await orderDiscountQueryService.GetRawByCodeAsync(request.PromoCode);

            var address = new Core.Domain.Entities.Address(request.Address.Street, request.Address.City,
                                                           request.Address.Country, request.Address.PostCode, request.Address.PhoneNumber);

            var orderId = await orderCommandService.AddAsync(user, productOrders, shipment, orderDiscount, request.Comment, address);

            return(orderId);
        }