Exemple #1
0
 public NavetNotifier(IEventClient webClient, INotifyManager pushManager, ITaskScheduler taskScheduler, ILogger logger)
 {
     TaskScheduler = taskScheduler;
     WebClient     = webClient;
     PushManager   = pushManager;
     Logger        = logger;
     RuleChecker   = new BusinessRuleChecker();
 }
        public void Handle(MoneyTransferCommand command)
        {
            var bankAccountFrom = _bankAccountRepository.GetById(command.SenderAccountId);

            BusinessRuleChecker.Handle(new IsTransferedAmountOfMoneyAvailableBusinessRule(bankAccountFrom, command));

            bankAccountFrom.Balance -= command.Amount;

            _bankAccountRepository.Update(bankAccountFrom);
            _eventBus.Publish(new MoneyTransferedEvent(command.SenderAccountId, command.Amount, TransferMoneyStatus.SEND));

            var bankAccountTo = _bankAccountRepository.GetById(command.ReceiverAccountId);

            bankAccountTo.Balance += command.Amount;

            _bankAccountRepository.Update(bankAccountTo);
            _eventBus.Publish(new MoneyTransferedEvent(command.ReceiverAccountId, command.Amount, TransferMoneyStatus.RECEIVE));
        }
 public void TransferedAmountShouldntBeLessThanActualBalance()
 {
     BusinessRuleChecker.Handle(new IsTransferedAmountOfMoneyAvailableBusinessRule(_bankAccountFrom, _moneyTransferCommand));
 }