Пример #1
0
        private void Apply(OrderCreated evt)
        {
            _orderId = evt.AggregateId;
            _state   = OrderAggregate.OrderState.Pending;

            foreach (var orderLine in _orderLines.Values)
            {
                _reservations[orderLine.ProductId] = false;
                DispatchCommand <ProductAggregate>(new ReserveProduct(orderLine.ProductId, orderLine.Quantity));
            }
        }
Пример #2
0
        private void Apply(OrderShipped evt)
        {
            _state = OrderAggregate.OrderState.Shipped;
            var reservedOrders = _orderLines.Values.Where(ol => _reservations.Any(r => r.Key == ol.ProductId && r.Value));

            foreach (var ol in reservedOrders)
            {
                DispatchCommand <ProductAggregate>(new PurchaseReservedProduct(ol.ProductId, ol.Quantity));
            }
            DispatchCommand <DummyNotifier>(new NotifyCustomer(AggregateRepository.CreateGuid()));
        }
Пример #3
0
 private void Apply(OrderDelivered obj)
 {
     _state = OrderAggregate.OrderState.Delivered;
     DispatchCommand <DummyNotifier>(new NotifyAdmin(AggregateRepository.CreateGuid()));
 }