/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor
*/
package es.bancodehierro.banco.menu;
import es.bancodehierro.banco.cc.ControlCC;
import es.bancodehierro.banco.cc.CuentaCorriente;
import es.bancodehierro.banco.cc.Movimiento;
import es.bancodehierro.banco.central.Banco;
import es.bancodehierro.banco.conexion.Conexion;
import es.bancodehierro.banco.enumeraciones.EnumMovimiento;
import es.bancodehierro.banco.excepciones.ClienteException;
import es.bancodehierro.banco.excepciones.CuentaCorrienteException;
import es.bancodehierro.banco.persona.Cliente;
import es.bancodehierro.banco.persona.Empleado;
import es.bancodehierro.banco.sucursal.Sucursal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Andreu Oliver, Juanjo Macanás, Roberto Simón, Xavi Jimenez, Miquel
* Angel Cànaves
*/
public class MenuCuentaCorriente {
public static void menuCC() {
//CuentaCorriente cC = new CuentaCorriente(GestionaMenu.llegirCadena("Introduce IBAN: "), GestionaMenu.llegirCadena("Introduce Oficina: "), GestionaMenu.llegirCadena("Introduce DC: "), GestionaMenu.llegirCadena("Introduce Cuenta: "), '\0');
MenuCuentaCorriente menuCC = new MenuCuentaCorriente();
Sucursal sucursal = new Sucursal(null, null, GestionaMenu.llegirSencer("Introduce un codigo de Sucursal (Cuatro digitos): "), 0000, null, null);
Banco banco = new Banco();
boolean repMenuPrincipal = true;
for (; repMenuPrincipal;) {
String[] opciones = {"Operaciones de Importe",
"Operaciones de Titular",
"Operaciones de Movimientos",
"Operaciones de Cuenta Corriente",
"Salir"};
int menu = menuCC.mostrarMenu(opciones);
switch (menu) {
case 0: {
boolean repMenuImporte = true;
menuCC.metodoImporte(repMenuImporte, sucursal);
break;
}
case 1: {
boolean repMenuTitular = true;
Cliente cliente = new Cliente(null, null, null, "12345678L", null, null, null, null);
menuCC.metodoTitular(repMenuTitular, sucursal);
break;
}
case 2: {
boolean repMenuMovimiento = true;
menuCC.metodoMovimiento(repMenuMovimiento);
break;
}
case 3: {
boolean repMenuBanco = true;
//Cliente cliente = new Cliente(null, null, null, GestionaMenu.llegirCadena("Introduce el dni del cliente: "), null, null, null, null);
menuCC.metodoBanco(repMenuBanco, sucursal, banco);
break;
}
case 4: {
try {
Principal.menuPrincipal();
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
} catch (CuentaCorrienteException ex) {
System.err.println(ex.getMessage());
} catch (ClienteException ex) {
System.err.println(ex.getMessage());
}
break;
}
}
}
}
/**
* Metodo para repetir el menu o ir al anterior
*
* @return Devuelve un booleano con la opcion elegida
*/
public boolean algunaCosaMas() {
String resp;
char respC = ' ';
for (; respC != 'N' && respC != 'S';) {
resp = GestionaMenu
.llegirCadena("\n¿Quieres hacer alguna cosa más?S/N: ");
try {
respC = resp.toUpperCase().charAt(0);
} catch (StringIndexOutOfBoundsException e) {
respC = ' ';
}
}
return respC != 'N';
}
/**
* Método para mostrar opciones del Menu
*
* @param opciones Array de Strings con los valores de las opciones
* @return Devuelve un int con la opcion elegida
*/
public int mostrarMenu(String[] opciones) {
return GestionaMenu.gestionarMenu(
"\nElegir Opcion:\n\t", opciones,
"¿Que quieres ejecutar?", 0);
}
/**
*
* @return
*/
public EnumMovimiento seleccionTipo() {
boolean respTipoBoolean = false;
EnumMovimiento respTipoEnum = null;
for (; !respTipoBoolean;) {
System.out.println("\nElige un tipo de Articulo:\n\t0-CUENTA CORRIENTE\n\t1-PRESTAMO\n\t2-TARJETA DEBITO\n\t3-TARJETA CREDITO");
int respPestescidaInt = GestionaMenu.llegirSencer("\nRespuesta: ");
if (respPestescidaInt == 0) {
respTipoEnum = EnumMovimiento.CUENTA_CORRIENTE;
respTipoBoolean = true;
} else if (respPestescidaInt == 1) {
respTipoEnum = EnumMovimiento.PRESTAMO;
respTipoBoolean = true;
} else if (respPestescidaInt == 2) {
respTipoEnum = EnumMovimiento.TARJETA_DEBITO;
respTipoBoolean = true;
} else if (respPestescidaInt == 3) {
respTipoEnum = EnumMovimiento.TARJETA_CREDITO;
respTipoBoolean = true;
} else {
System.out.println("\nERROR:Opción no Válida, Inserta un Valor Correcto");
}
}
return respTipoEnum;
}
/**
* Metodo que contiene las opciones del menu con las operaciones de Tipo
*
* @param repMenuImporte booleano con true o false
* @param cC Paso de la cuenta corriente
*/
public void metodoImporte(boolean repMenuImporte, Sucursal sucursal) {
CuentaCorriente cC = new CuentaCorriente(ControlCC.controlIBAN(), ControlCC.controlOficina(), ControlCC.controlDc(), ControlCC.controlCC(), 0);
for (; repMenuImporte;) {
String[] opcionesImp = {"Modificar Importe",
"Mostrar Importe",
"Volver atrás"};
int menuImp = mostrarMenu(opcionesImp);
switch (menuImp) {
case 0: {
try {
//cC.setImporte(GestionaMenu.llegirDouble("Introduce importe:positivo para sumar, negativo para restar"));
System.out.println("Cambios realizados: " + cC.modificarSaldo(sucursal));
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
}
break;
}
case 1: {
try {
//System.out.println(cC.getImporte());
System.out.println(cC.mostrarSaldo(sucursal) + "€");
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
} catch (CuentaCorrienteException ex) {
System.err.println(ex.getMessage());
}
break;
}
case 2: {
//Retrocede al menu anterior
repMenuImporte = false;
break;
}
}
if (menuImp != 2) {
repMenuImporte = algunaCosaMas();
}
}
}
/**
* Metodo que contiene las opciones del menu con las operaciones de Importe
*
* @param repMenuTitular booleano con true o false
* @param cC Paso de la cuenta corriente
* @param cliente Cliente a tratar
*/
public void metodoTitular(boolean repMenuTitular, Sucursal sucursal) {
CuentaCorriente cC = new CuentaCorriente(ControlCC.controlIBAN(), ControlCC.controlOficina(), ControlCC.controlDc(), ControlCC.controlCC(), 0);
for (; repMenuTitular;) {
String[] opcionesTit = {"Agregar Titular",
"Modificar Titular",
"Eliminar Titular",
"Intercambiar Titular",
"Volver atrás"};
int menuTit = mostrarMenu(opcionesTit);
switch (menuTit) {
case 0: {
//Cliente cliente2 = new Cliente(0, null, null, null, null, null, null, null, null);
//Cliente clienteOperacion= cliente;
try {
System.out.println("Filas insertadas: "+cC.agregarTitular(sucursal));
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClienteException ex) {
System.err.println(ex.getMessage());
}
break;
}
case 1: {
try {
// Cliente nuevo=new Cliente(null, null, null, "12345789O", null, null, null, null);
System.out.println("Filas actualizadas: "+cC.cambiarTitular(sucursal));
} catch (CuentaCorrienteException ex) {
System.err.println(ex.getMessage());
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClienteException ex) {
System.err.println(ex.getMessage());
}
break;
}
case 2: {
try {
System.out.println("Filas eliminadas: "+cC.eliminarTitular(sucursal));
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClienteException ex) {
System.err.println(ex.getMessage());
}
break;
}
case 3: {
try {
System.out.println("Filas actualizadas: "+cC.intercambiarTitular(sucursal));
} catch (CuentaCorrienteException ex) {
System.err.println(ex.getMessage());
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
}
break;
}
case 4: {
//Retrocede al menu anterior
repMenuTitular = false;
break;
}
}
if (menuTit != 4) {
repMenuTitular = algunaCosaMas();;
}
}
}
/**
* Metodo que contiene las opciones del menu con las operaciones de
* Movimiento
*
* @param repMenuMovimiento booleano con true o false
* @param cC Paso de la cuenta corriente
*/
public void metodoMovimiento(boolean repMenuMovimiento) {
CuentaCorriente cC = new CuentaCorriente(ControlCC.controlIBAN(), ControlCC.controlOficina(), ControlCC.controlDc(), ControlCC.controlCC(), 0);
for (; repMenuMovimiento;) {
String[] opcionesMovC = {"Mostrar todos los Movimientos",
"Mostrar Movimientos segun Tipo",
"Volver atrás"};
int menuMovC = mostrarMenu(opcionesMovC);
switch (menuMovC) {
case 0: {
try {
for (Movimiento mov : cC.mostrarMovimiento()) {
System.out.println(mov);
}
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
}
break;
}
case 1: {
//Retrocede al menu anterior
repMenuMovimiento = false;
break;
}
}
if (menuMovC != 1) {
repMenuMovimiento = algunaCosaMas();
}
break;
}
}
public void metodoBanco(boolean repMenuBanco, Sucursal sucursal, Banco banco) {
/*CuentaCorriente cC = new CuentaCorriente(ControlCC.controlIBAN(), ControlCC.controlOficina(), ControlCC.controlDc(), ControlCC.controlCC(), 0);
*/
/*
}*/
for (; repMenuBanco;) {
String[] opcionesTit = {"Agregar Cuenta Corriente",
"Eliminar Cuenta Corriente",
"Mostrar Cuenta Corriente",
"Volver atrás"};
int menuTit = mostrarMenu(opcionesTit);
switch (menuTit) {
case 0: {
try {
// Cliente cliente = new Cliente(0, null, null, null, null, null, null);
System.out.println("CC insertada: "+banco.agregarCuentaCorriente(sucursal));
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClienteException ex) {
System.err.println(ex.getMessage());
}
break;
}
case 1: {
try {
//Cliente cliente = new Cliente(0, null, null, null, null, null, null);
System.out.println("CC eliminada: "+banco.eliminarCuentaCorriente(sucursal));
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClienteException ex) {
System.err.println(ex.getMessage());
}
break;
}
case 2: {
boolean repMenuMovimientoC = true;
for (; repMenuMovimientoC;) {
String[] opcionesMovC = {"Mostrar todas las cuenta corriente",
"Mostrar todas las cuenta corriente de sucursal",
"Mostrar todas las cuenta corriente de cliente",
"Volver atrás"};
int menuMovC = mostrarMenu(opcionesMovC);
switch (menuMovC) {
case 0: {
try {
for (CuentaCorriente pCC : banco.mostrarCuentaCorriente()) {
System.out.println(pCC);
}
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
}
break;
}
case 1: {
try {
for (CuentaCorriente pCC : banco.mostrarCuentaCorriente(sucursal)) {
System.out.println(pCC);
}
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
}
break;
}
case 2: {
try {
String dni = GestionaMenu.llegirCadena("Introduce el DNI: ");
Statement st = Conexion.conectar().createStatement();
String consulta = "SELECT * FROM CLIENTE WHERE DNI_CLIENTE = '" + dni + "'";
ResultSet rs = st.executeQuery(consulta);
rs.next();
Cliente titular = null;
try {
if (Banco.comprobarCliente(dni)) {
titular = new Cliente(null, null, null, dni, null, null, null, null);
}
} catch (ClienteException ex) {
System.err.println(ex.getMessage());
}
for (CuentaCorriente pCC : banco.mostrarCuentaCorriente(titular)) {
System.out.println(pCC);
}
break;
} catch (SQLException ex) {
Logger.getLogger(MenuCuentaCorriente.class.getName()).log(Level.SEVERE, null, ex);
}
}
case 3: {
//Retrocede al menu anterior
repMenuMovimientoC = false;
menuTit = 3;
break;
}
}
if (menuMovC != 3) {
repMenuMovimientoC = algunaCosaMas();
menuTit = 3;
}
}
//banco.mostrarCuentaCorriente(sucursal);
break;
}
case 3: {
//Retrocede al menu anterior
repMenuBanco = false;
break;
}
}
if (menuTit != 3) {
repMenuBanco = algunaCosaMas();;
}
}
}
}