package src;

import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;


public class CuentaCorriente extends Cuentas 
{
    public CuentaCorriente ()
    {
    }
    //CREA UNA CUENTA DE TIPO CUENTA CORRIENTE, SEGUN LOS VALORES DEL FORMULARIO
    public void CreaCuentaC(Sucursal suc,String dni,String nombre,String apellidos,String cuenta, int tc)
    {
       CuentaCorriente p1=new CuentaCorriente();
       ClienteFisico cliF=new ClienteFisico();
       ClienteFisico cliFpersist=new ClienteFisico();
       ClienteJuridico cliJ=new ClienteJuridico();
       ClienteJuridico cliJpersit=new ClienteJuridico();

      if(suc.devuelveDni(dni)==null) //Si es igual null es que no existe el cliente
      {
       int tipoCliente=2; 
       String extraer=(dni.substring(0, 1));//Extrae el primer caracter del dni para diferencia cF o Cj
       //COMPROBAMOS SI EL PRIMER CARACTER ES UN NUMERO O UNA LETRA PARA
       //VER SI ES UN CLIENTE FISICO O JURIDICO
       if((extraer.compareTo("0")==0) || (extraer.compareTo("1")==0) || (extraer.compareTo("2")==0) || (extraer.compareTo("3")==0) || (extraer.compareTo("4")==0) ||(extraer.compareTo("5")==0) || (extraer.compareTo("6")==0) || (extraer.compareTo("7")==0) || (extraer.compareTo("8")==0) || (extraer.compareTo("9")==0))
       {
        tipoCliente=1;
        cliFpersist=cliF.CreaClienteF(suc,dni, nombre, apellidos, cuenta, tipoCliente);
        persist(cliFpersist);//SE GUARDA LA INSTANCIA DE CLIENTE FISICO EN LA BASE DE DATOS
       }
       if(tipoCliente==2)
       {
        cliJpersit=cliJ.CreaClienteJ(suc,dni, nombre, apellidos, cuenta, tipoCliente);
        persist(cliJpersit);//SE GUARDA LA INSTANCIA DE CLIENTE JURIDICO EN LA BASE DE DATOS
       }
      }
       //INSERTA LA CUENTA
        p1.setnumero_cuenta(cuenta);
        p1.setNombre_cliente(nombre+" "+apellidos);
        p1.setSaldo_cuenta(0);
        p1.setId_cliente(dni);
        Date fecha=new Date();
        p1.setFecha(fecha);
        p1.settipoCuenta(tc);

        suc.insertaCuenta(p1);//SE AÑADE EN EL ARRAYLIST DE CLIENTES
        this.persist(p1);//GUARDAMOS LA CUENTA DE ESE CLIENTE
    }

    public void persist(Object object) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("bancocolombinoPU");
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        try {
            em.persist(object);
            em.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            em.getTransaction().rollback();
        } finally {
            em.close();
        }
    }
}

