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