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