/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Capitulo_6.Cajero2;

import java.util.Scanner;

/**
 *
 * @author felix
 */
public class Cajero {
    private int estado;
    private int NumeroCliente;
    private Cliente ClienteActual;
    private Cuenta CuentaActual;
    private Banco elBanco;
    
    private static final int ESTADO_INICIAL = 1;
    private static final int ESTADO_CLAVE = 2;
    private static final int ESTADO_CUENTA = 3;
    private static final int ESTADO_TRANSACCION = 4;

    private static final int CUENTA_DE_CHEQUES = 1;
    private static final int SAVINGS_ACCOUNT = 2;

    public Cajero()
    {  
      // initialize Banco and Clientes

      elBanco = new Banco();

      elBanco.leeClientes();


      // construct components

      muestraEstado(ESTADO_INICIAL);      
    }
  
    public void muestraEstado(int estadoNuevo)
    {  
        estado = estadoNuevo;

        if (estado == ESTADO_INICIAL)
         System.out.print("Ingrese un Numero de Cliente \nA = OK");
        else if (estado == ESTADO_CLAVE)
         System.out.print("Ingrese su Clave\nA = OK");
        else if (estado == ESTADO_CUENTA)
         System.out.print("Seleccione tipo de Cuenta\n" 
           + "A = Cheques\nB = Ahorros\nC = Salir");
        else if (estado == ESTADO_TRANSACCION)
         System.out.print("Balance = " 
            + CuentaActual.obtenBalance() 
            + "\nIngrese el monto  y seleccione una Operacion\n"
            + "A = Retiro\nB = Deposito\nC = Cancelar");
    } 

    public void setNumeroCliente() 
    {  
        Scanner entrada = new Scanner(System.in);
        NumeroCliente = entrada.nextInt();
        muestraEstado(ESTADO_CLAVE);
    }

    public void selecionaCliente()
    {  
        int pin = 0;

        Scanner entrada = new Scanner(System.in);
        pin = entrada.nextInt();
        ClienteActual = elBanco.buscaCliente(NumeroCliente, pin);

        if (ClienteActual == null) 
            muestraEstado(ESTADO_INICIAL);
        else 
            muestraEstado(ESTADO_CUENTA);
    }

    public void selecionaCuenta(int unaCuenta)
    {
        if (unaCuenta == CUENTA_DE_CHEQUES)
            CuentaActual = ClienteActual.obten_cuenta_de_Cheques();
        else
            CuentaActual = ClienteActual.obten_cuenta_de_Ahorros();
        muestraEstado(ESTADO_TRANSACCION);
    }

    public void retiro()
    {  
        Scanner entrada = new Scanner(System.in);
        CuentaActual.retiro(entrada.nextFloat());
        muestraEstado(ESTADO_CUENTA);
    }

    /** 
      depositos amount typed in keypad to current account. 
      Sets estado to ACCOUNT. 
    */

    public void deposito()
    {  
        Scanner entrada = new Scanner(System.in);
        CuentaActual.deposito(entrada.nextFloat());
        muestraEstado(ESTADO_CUENTA);
    }
    

}
