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();
            }
        }
예제 #3
0
        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;
            }
        }
예제 #4
0
 public DepositAmountController(IDepositAmountInteractor intercator, DepositAmountSuscriber suscriber)
 {
     DomainEventsPublisher.GetInstancia().ResetSuscribers();
     DomainEventsPublisher.GetInstancia().RegisterSuscriber(suscriber);
     _interactor = intercator;
 }
예제 #5
0
 public CreateAccountController(ICreateAccountInteractor intercator, CreateAccountSuscriber suscriber)
 {
     DomainEventsPublisher.GetInstancia().RegisterSuscriber(suscriber);
     _interactor = intercator;
 }