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