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);
        }
Exemple #2
0
 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);
        }