public class Minuman extends Transaction
{
private int amount;
private Keypad keypad;
private CekStok CekStok;
int input;
private final static int CANCELED = 8;
public Minuman(int userAccountNumber, Screen usrScreen, Database_EMoney_Mandiri atmBankDatabase, Keypad usrKeypad, CekStok stokminuman){
super(userAccountNumber, usrScreen, atmBankDatabase);
keypad = usrKeypad;
CekStok = stokminuman;
}
@Override
public void execute()
{
boolean minumanKeluar = false;
double saldo;
Database_EMoney_Mandiri bankDatabase = getBankDatabase();
Screen screen = getScreen();
do{
amount = displayMenuOfAmounts();
if(amount != CANCELED){
saldo = Database_EMoney_Mandiri.getSaldo(getAccountNumber());
if(amount <= saldo){
if(CekStok.stokCukup(input)){
Database_EMoney_Mandiri.beli(getAccountNumber(), amount);
CekStok.keluarkanMinuman(input);
minumanKeluar = true;
screen.displayMessageLine("\nTransaksi sukses. Silahkan Ambil minuman anda.");
}
else
{
screen.displayMessageLine("\nMaaf, minuman pilihan anda habis.");
}
}
else
{
screen.displayMessageLine("\nMaaf, saldo anda tidak cukup.");
}
}
else{
screen.displayMessageLine("\nMembatalkan Transaksi...");
return;
}
} while(!minumanKeluar);
}
private int displayMenuOfAmounts(){
int harga = 0;
Screen screen = getScreen();
int[] amounts = {0, 12500, 9900, 7000, 6000, 8000, 8000, 8000};
while(harga == 0){
screen.displayMessageLine("\n\nDaftar Minuman : ");
screen.displayMessageLine("1 - Bear Brand Rp 12500,00");
screen.displayMessageLine("2 - Pocari Sweat Rp 9900,00");
screen.displayMessageLine("3 - Teh Pucuk Rp 7000,00");
screen.displayMessageLine("4 - Aqua Rp 6000,00");
screen.displayMessageLine("5 - Pepsi Blue Rp 8000,00");
screen.displayMessageLine("6 - Cola Cola Rp 8000,00");
screen.displayMessageLine("7 - Sprite Rp 8000,00");
screen.displayMessageLine("8 - Batalkan Pembelian");
screen.displayMessage("\nPilih Minuman : ");
input = keypad.getInput();
switch(input){
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
harga = amounts[input];
break;
case 8 :
harga = CANCELED;
break;
default :
screen.displayMessageLine("\nInput Salah");
screen.displayMessageLine("Silahkan Coba lagi");
}
}
return harga;
}
}