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); }