예제 #1
0
        public OrderProcessedViewModel Handle(ProcessOrderAfterPaymentCommand command)
        {
            // 1. Create order ID
            var tempOrderId = _requestService.GenerateTemporaryOrderId();

            // 2. Register order in the system
            var order   = Domain.Orders.Order.CreateFromShoppingCart(tempOrderId, command.ShoppingCart.OrderRequest);
            var orderId = _orderRepository.AddAndReturnKey(order);

            // 3. Ship
            var shipmentDetails = _shipmentService.SendRequestForDelivery(order);

            // 4. Update fidelity card and membership status


            // Prepare model
            var model = new OrderProcessedViewModel
            {
                OrderId         = orderId.ToString(CultureInfo.InvariantCulture),
                PaymentDetails  = { TransactionId = command.TransactionId },
                ShippingDetails = shipmentDetails
            };

            return(model);
        }