public void PublishDomainEvents() { var e = new TestEvent(); var mockRepository = new MockRepository(); IEnumerable<object> handlers; using (mockRepository.Record()) { var handler1 = mockRepository.StrictMock<IEventHandler<TestEvent>>(); handler1.Expect(h => h.Handle(e)).Repeat.Once(); var handler2 = mockRepository.StrictMock<IEventHandler<TestEvent>>(); handler2.Expect(h => h.Handle(e)).Repeat.Once(); handlers = new[] { handler1, handler2 }; } MultiInstanceFactory multiInstanceFactory = t => handlers; var publisher = new DomainEventsPublisher(multiInstanceFactory); DomainEvents.Raise(e); using (mockRepository.Playback()) publisher.Publish(); mockRepository.VerifyAll(); }
public void Execute(string id) { var account = Account.CreateAccount(id); if (account.HasChanges()) { var changes = account.GetChanges(); DomainEventsPublisher.GetInstancia().PublishEvents(changes); account.AcceptChanges(); } }
public void Execute(string accountId, decimal depositAmount) { try { var constructor = _getAccountById.GetAccountById(accountId); var account = Account.CreateAccount(constructor.AggregateId); account.BuildAggregate(constructor); account.DepositAmount(depositAmount); if (account.HasChanges()) { var changes = account.GetChanges(); DomainEventsPublisher.GetInstancia().PublishEvents(changes); account.AcceptChanges(); } } catch (Exception e) { throw e; } }
public DepositAmountController(IDepositAmountInteractor intercator, DepositAmountSuscriber suscriber) { DomainEventsPublisher.GetInstancia().ResetSuscribers(); DomainEventsPublisher.GetInstancia().RegisterSuscriber(suscriber); _interactor = intercator; }
public CreateAccountController(ICreateAccountInteractor intercator, CreateAccountSuscriber suscriber) { DomainEventsPublisher.GetInstancia().RegisterSuscriber(suscriber); _interactor = intercator; }