Ejemplo n.º 1
0
        public MakePaymentResult MakePayment(MakePaymentRequest request)
        {
            var accountDataStore = GetAccountDataStore();

            var account = accountDataStore.GetAccount(request.DebtorAccountNumber);

            var validationResult = AccountValidator.ValidateAccountCanSatisfyPaymentRequest(request, account);

            if (validationResult.Success)
            {
                account.Balance -= request.Amount;
                accountDataStore.UpdateAccount(account);
            }

            return(validationResult);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Make Payment
        /// </summary>
        /// <param name="request">Payment Request</param>
        /// <returns>Payment Result</returns>
        public MakePaymentResult MakePayment(MakePaymentRequest request)
        {
            var result = new MakePaymentResult();

            // Recover Account
            Account account = _accountDataStore.GetAccount(request.DebtorAccountNumber);

            // Check and Set Account Validity
            result.Success = AccountValidator.CheckAccountIsValid(account, request);

            if (result.Success)
            {
                // Calc & Set New Balance
                account.Balance = CalculateNewAccountBalance(account.Balance, request.Amount);

                // Update Account
                _accountDataStore.UpdateAccount(account);
            }

            return(result);
        }