Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. import java.text.DateFormat;
  2. import java.text.SimpleDateFormat;
  3. import java.time.LocalDateTime;
  4. import java.time.format.DateTimeFormatter;
  5. import java.util.Calendar;
  6. import java.util.Date;
  7. public class Withdrawal extends Transaction{
  8.     private int amount;
  9.     private Keypad keypad;
  10.     int price;
  11.     int[] amounts = {0, 20, 40, 60, 100, 200};
  12.     private CashDispenser cashDispenser;
  13.     private final static int CANCELED = 6;
  14.     public Withdrawal(int userAccountNumber, Screen gtoScreen, BankDatabase gtoBankDatabase, Keypad gtoKeypad, CashDispenser gtoCashDispenser){
  15.         super(userAccountNumber, gtoScreen, gtoBankDatabase);
  16.         keypad = gtoKeypad;
  17.         cashDispenser = gtoCashDispenser;
  18.     }
  19.     @Override
  20.     public void execute(){
  21.         boolean cashDispensed = false;
  22.         double availableBalance;
  23.         BankDatabase bankDatabase = getBankDatabase();
  24.         Screen screen = getScreen();
  25.         do{
  26.             amount = displayMenuOfAmounts();
  27.             if(amount != CANCELED){
  28.                 availableBalance = bankDatabase.getAvailableBalance(getAccountNumber());
  29.                 if(amount <= availableBalance){
  30.                     if(cashDispenser.isSufficientCashAvailable(amount)){
  31.                         bankDatabase.debit(getAccountNumber(), amount);
  32.                         cashDispenser.dispenseCash(amount);
  33.                         cashDispensed = true;
  34.                         screen.displayMessageLine("\nYour cash has been dispensed. Please take your struct now.");
  35.                         //BankDatabase bankDatabase = getBankDatabase();
  36.                         availableBalance = bankDatabase.getAvailableBalance(getAccountNumber());
  37.                         screen.displayMessageLine("\nGTO Information : ");
  38.                         screen.displayMessage(" - MARCHALL COMPANY -\n");
  39.                         screen.displayMessage(" - Transaction Date : " + dateFormat.format(date) + " \n");
  40.                         screen.displayMessage(" - Ticket Price : ");
  41.                         screen.displayDollarAmount(amounts[price]);
  42.                         screen.displayMessage("\n");
  43.                         screen.displayMessage(" - Remaining Balance : ");
  44.                         screen.displayDollarAmount(availableBalance);
  45.                         screen.displayMessageLine("");
  46.                     }
  47.                 }
  48.                 else{
  49.                     screen.displayMessageLine("\nInsufficient funds in your account.");
  50.                 }
  51.             }
  52.             else{
  53.                 screen.displayMessageLine("\nCancelling transactions...");
  54.                 return;
  55.             }
  56.         }   while(!cashDispensed);
  57.     }
  58.     private Date date;
  59.     private DateFormat dateFormat;
  60.     private int displayMenuOfAmounts(){
  61.         int userChoice = 0;
  62.         dateFormat = new SimpleDateFormat("dd/MM/yyyy");
  63.         date = new Date();
  64.         Screen screen = getScreen();
  65.         while(userChoice == 0){
  66.             screen.displayMessageLine("\nDestination Menu : ");
  67.             screen.displayMessageLine("1 - Jember $20");
  68.             screen.displayMessageLine("2 - Sidoarjo $40");
  69.             screen.displayMessageLine("3 - Surabaya $60");
  70.             screen.displayMessageLine("4 - Bandung $100");
  71.             screen.displayMessageLine("5 - Balikpapan $200");
  72.             screen.displayMessageLine("6 - Cancel Transaction");
  73.             screen.displayMessage("\nChoose a destination : ");
  74.             int input = keypad.getInput();
  75.             price = input;
  76.             switch(input){
  77.                 case 1 :
  78.                 case 2 :
  79.                 case 3 :
  80.                 case 4 :
  81.                 case 5 :
  82.                     userChoice = amounts[input];
  83.                     break;
  84.                 case CANCELED :
  85.                     userChoice = CANCELED;
  86.                     break;
  87.                 default :
  88.                     screen.displayMessageLine("\nInvalid selection.");
  89.                     screen.displayMessageLine("Try again.");
  90.             }
  91.         }
  92.         return userChoice;
  93.     }
  94. }