Пример #1
0
 private void Persist(IEventStoreAggregateId eventStoreAggregateId, IOrderAggregate aggregate, IOrderState state)
 {
     EventStore.AppendEvents(eventStoreAggregateId, ((IOrderStateProperties)state).Version, aggregate.Changes, () => { StateRepository.Save(state); });
     if (AggregateEventListener != null)
     {
         AggregateEventListener.EventAppended(new AggregateEvent <IOrderAggregate, IOrderState>(aggregate, state, aggregate.Changes));
     }
 }
        public void Handle(PlaceOrderV1 message)
        {
            this.applicationLogger.HandlerProcessingMessage(this, message);
            IOrderAggregate orderAggregate = this.orderAggregateFactory.Create(message.OrderId);

            this.domainRepository.LoadIfExistsAsync(orderAggregate);
            orderAggregate.PlaceOrder(message.OrderId, message.CustomerId, message.OrderDetails);
            this.domainRepository.SaveAsync(orderAggregate);
        }
        public void Handle(IOrderFulfilledV1 message)
        {
            this.applicationLogger.HandlerProcessingMessage(this, message);
            IOrderAggregate orderAggregate = this.orderAggregateFactory.Create(message.OrderId);

            this.domainRepository.LoadAsync(orderAggregate);
            orderAggregate.OrderSentToCustomer(message.OrderId, message.CustomerId);
            this.domainRepository.SaveAsync(orderAggregate);
        }
        public void Handle(IPaymentCompletedV1 message)
        {
            this.applicationLogger.HandlerProcessingMessage(this, message);
            IOrderAggregate orderAggregate = this.orderAggregateFactory.Create(message.OrderId);

            this.domainRepository.LoadAsync(orderAggregate);
            orderAggregate.PaymentProcessed(message.OrderId, message.CustomerId);
            this.domainRepository.SaveAsync(orderAggregate);
        }