public static async Task <BankAccount> BeneficiaryUniquenessChecker( BankAccount beneficiaryAccount, IAccountUniquenessChecker accountUniquenessChecker) { var account = await accountUniquenessChecker.AccountUniquenessChecker(beneficiaryAccount.BankAccountHolder, beneficiaryAccount.BankAccountDetails); if (account.BankAccountId is null) { throw new BusinessRuleValidationException( "The beneficiary's bank account was not found", BankAccountStatusType.BankAccountNotFound, BusinessRuleValidationEnumeration.ERROR_BENEFICIARY_ACCOUNT_NOT_FOUND); } if (account.Canceled) { throw new BusinessRuleValidationException( "The beneficiary's bank account is canceled", BankAccountStatusType.Canceled, BusinessRuleValidationEnumeration.ERROR_BENEFICIARY_ACCOUNT_IS_CANCELED); } return(account); }
public RegisterWireTransferCommandHandler(IWireTransferRepository repository, IAccountUniquenessChecker accountUniquenessChecker, IBeneficiaryAccountBalance beneficiaryAccountBalance, IMediator mediator) { _repository = repository; _mediator = mediator; _accountUniquenessChecker = accountUniquenessChecker; _beneficiaryAccountBalance = beneficiaryAccountBalance; }
public static async Task <WireTransfer> AddAmountTransferOnBeneficiaryBalanceAsync(WireTransfer wireTransfer, IBeneficiaryAccountBalance beneficiaryAccountBalance, IAccountUniquenessChecker accountUniquenessChecker) { wireTransfer.BeneficiaryBankAccount = await BankAccount.BeneficiaryUniquenessChecker( wireTransfer.BeneficiaryBankAccount, accountUniquenessChecker); wireTransfer.TransactionId = new TransactionId(await beneficiaryAccountBalance.AddAmountToBeneficiaryBalanceAsync(wireTransfer)); return(wireTransfer); }