static void authorizeTransaction(String command) { if (command.split(" ").length < 3) { System.out.print("\tError! Not enough arguments for command.\n"); return; } String accNum = command.split(" ")[1]; double amount = -Double.parseDouble( command .split(" ")[ 2]); // Invert the amount because - means add to credit and + means take away from // credit CreditAccount[] records = loadData(); for (int i = 0; i < records.length; i++) { if (records[i].getAccountNumber().equals(accNum)) { if (amount > 0) { if (records[i].getMaxLimit() == records[i].getAvailable()) System.out.print("\tError! Authorization attempt failed. Credit is already max.\n"); else if (records[i].getAvailable() + amount > records[i].getMaxLimit()) { records[i].setAvailable(records[i].getAvailable()); System.out.print( "\tWarning! Authorization granted. Attempted to raise credit above max.\n"); System.out.printf( "\tAccount %s|Transaction %.2f|Available Credit %.2f\n", accNum, amount, records[i].getAvailable()); } else { records[i].setAvailable(records[i].getAvailable() + amount); System.out.print("\tAuthorization granted.\n"); System.out.printf( "\tAccount %s|Transaction %.2f|Available Credit %.2f\n", accNum, amount, records[i].getAvailable()); } } else { if (amount + records[i].getAvailable() < 0) System.out.print( "\tError! Authorization denied. Attempted to use more credit than available .\n"); else { records[i].setAvailable(amount + records[i].getAvailable()); System.out.print("\tAuthorization granted.\n"); System.out.printf( "\tAccount %s|Transaction %.2f|Available Credit %.2f\n", accNum, amount, records[i].getAvailable()); } } saveData(records); return; } } System.out.print("\tError! No record found for account " + accNum + ".\n"); }
static void createAccount(String command) { if (command.split(" ").length < 2) { System.out.print("\tError! Not enough arguments for command.\n"); return; } String issuerSym = command.split(" ")[1].toUpperCase(); String accountNum; double maxCredit; CreditAccount account; CreditAccount[] oldRecords; CreditAccount[] newRecords; if (issuerSym.equals("AE")) accountNum = "3"; else if (issuerSym.equals("V")) accountNum = "4"; else if (issuerSym.equals("MC")) accountNum = "5"; else if (issuerSym.equals("DIS")) accountNum = "6"; else if (issuerSym.equals("DINE")) accountNum = "7"; else { System.out.print("\tError! Issuer symbol [" + issuerSym + "] is not valid.\n"); return; } for (int i = 0; i < 15; i++) accountNum += Integer.toString((int) (Math.random() * 10)); maxCredit = Integer.parseInt(accountNum.substring(15)) >= 4 ? 1000.0f : 500.0f; account = new CreditAccount(accountNum, maxCredit); account.setIssuerSymbol(issuerSym.toUpperCase()); account.setValid(true); oldRecords = loadData(); newRecords = new CreditAccount[oldRecords.length + 1]; for (int i = 0; i < oldRecords.length; i++) newRecords[i] = oldRecords[i]; newRecords[oldRecords.length] = account; saveData(newRecords); System.out.print( "\tCreated new credit card account [" + issuerSym.toUpperCase() + "]:\tAccount Number " + accountNum + ", Credit Limit : " + account.getMaxLimit() + "\n"); }