Ramdan51-062

Withdrawal

Oct 19th, 2017
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.25 KB | None | 0 0
  1. public class Withdrawal extends Transaction
  2. {
  3.     private int amount;    
  4.     private CashDispenser cashDispenser;
  5.     private Keypad keypad;
  6.     private BankDatabase bankDatabase;
  7.    
  8.     private static final int CANCELED = 6;
  9.     public Withdrawal(int userAccountNumber, Screen atmScreen, BankDatabase atmBankDatabase, Keypad atmKeypad, CashDispenser cashDispenser)
  10.     {
  11.         super(userAccountNumber, atmScreen, atmBankDatabase);
  12.        
  13.         keypad = atmKeypad;
  14.         bankDatabase = atmBankDatabase;
  15.     }
  16.    
  17.     @Override
  18.     public void execute()
  19.     {
  20.         boolean cashDispensed = false;
  21.         double availableBalance;
  22.        
  23.         BankDatabase bankDatabase = getBankDatabase();
  24.         Screen screen = getScreen();
  25.        
  26.         do
  27.         {
  28.             amount = displayMenuOfAmounts();
  29.            
  30.             if(amount != CANCELED)
  31.             {
  32.                 availableBalance = bankDatabase.getAvailableBalance(getAccountNumber());
  33.                
  34.                 if(amount <= availableBalance)
  35.                 {
  36.                     if(cashDispenser.isSufficientCashAvailable(amount))
  37.                     {
  38.                         bankDatabase.debit(getAccountNumber(), amount);
  39.                        
  40.                         cashDispenser.dispenseCash(amount);
  41.                         cashDispensed = true;
  42.                         screen.displayMessageLine("\nYour cash has been " + "dispensed. Please take your cash now.");
  43.                     }
  44.                     else screen.displayMessageLine("\nInsufficient cash available in the ATM." + "\n\nPlease choose a smaller amount.");
  45.                 }
  46.                 else screen.displayMessageLine("\nInsufficient funds in your account." + "\n\nPlease choose a smaller amount.");
  47.             }
  48.            
  49.             else
  50.             {
  51.                 screen.displayMessageLine("Canceling transaction...");
  52.                 return;
  53.             }
  54.         } while(!cashDispensed);
  55.     }
  56.    
  57.     private int displayMenuOfAmounts()
  58.     {
  59.          int userChoice = 0;
  60.          Screen screen = getScreen();
  61.          
  62.          int[] amounts = {0, 20, 40, 60, 100, 200};
  63.            
  64.          while(userChoice == 0)
  65.          {
  66.              screen.displayMessageLine("\nWithdrawal Menu: ");
  67.              screen.displayMessageLine("1 - $20");
  68.              screen.displayMessageLine("2 - $40");
  69.              screen.displayMessageLine("3 - $60");
  70.              screen.displayMessageLine("4 - $100");
  71.              screen.displayMessageLine("5 - $200");
  72.              screen.displayMessageLine("6 - Cancel");
  73.              screen.displayMessage("\nChoose a withdrawal amount: ");
  74.              
  75.              int input = keypad.getInput();
  76.              
  77.              switch(input)
  78.              {
  79.                  case 1:
  80.                  case 2:
  81.                  case 3:
  82.                  case 4:
  83.                  case 5:
  84.                     userChoice = amounts[input];
  85.                     break;
  86.                  case CANCELED:
  87.                     userChoice = CANCELED;
  88.                     break;
  89.                  default:
  90.                     screen.displayMessageLine("\nInvalid selection. Try again.");
  91.              }
  92.     }
  93.     return userChoice;
  94. }
  95.    
  96. }
Advertisement
Add Comment
Please, Sign In to add comment