package src;


import java.text.DecimalFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;


// <editor-fold defaultstate="collapsed" desc=" UML Marker ">
// #[regen=yes,id=DCE.D0D603EF-6726-5347-521D-24026EE2AEC8]
// </editor-fold>
public class PrestamoPersonal extends Cuentas {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.9345E159-656E-2DCA-D21A-2DDD1E73E692]
    // </editor-fold>
    private Date fecha_fin;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.94C151A5-2BF8-8E1A-BB7E-9C29EF2AC42E]
    // </editor-fold>
    private float interes=(float) 0.03;
    private float importe;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.3FB4C860-A78A-390E-A714-00A833B0A4C4]
    // </editor-fold>
    public PrestamoPersonal () {
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.4F0D36B3-D04B-F1EE-646D-CDB6BD019F82]
    // </editor-fold>
    public Date getFecha_fin () {
        return fecha_fin;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.D0495923-4166-A0B6-63A6-E2CF00232F62]
    // </editor-fold>
    public void setFecha_fin (Date Fecha_fin) {
        this.fecha_fin = Fecha_fin;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.579DD196-2870-D1FD-3A14-DA5233754027]
    // </editor-fold>
    public float getInteres () {
        return interes;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.A7DC2400-25A7-EB04-000B-65B82DB9A01B]
    // </editor-fold>
    public void setInteres (float interes) {
        this.interes = interes;
    }
     public void CreaCuentaPrestamoP(Sucursal suc,String dni,String nombre,String apellidos,String cuenta, int tc,String duracion,String importe) throws ParseException
    {
        PrestamoPersonal p1=new PrestamoPersonal();
        ClienteFisico cliF=new ClienteFisico();
       ClienteFisico cliFpersist=new ClienteFisico();
       ClienteJuridico cliJ=new ClienteJuridico();
       ClienteJuridico cliJpersit=new ClienteJuridico();

        DecimalFormat df1=new DecimalFormat();
        DecimalFormat df2=new DecimalFormat();
        float importe2;
        int meses;
        Calendar calendar = Calendar.getInstance();

      if(suc.devuelveDni(dni)==null) //Si es igual null es que no existe el cliente
      {
       int tipoCliente=2;

       //Como obtener si es un numero o cadena

        //Extrae el primer caracter del dni para diferencia cF o Cj
        String extraer=(dni.substring(0, 1));
       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);
       }
       if(tipoCliente==2)
       {
        cliJpersit=cliJ.CreaClienteJ(suc,dni, nombre, apellidos, cuenta, tipoCliente);
        persist(cliJpersit);
       }
      }
        p1.setnumero_cuenta(cuenta);
        p1.setNombre_cliente(nombre+""+apellidos);
        p1.setSaldo_cuenta(300);
        p1.setId_cliente(dni);
        Number n1=df1.parse(duracion);
        meses=n1.intValue();
        Date fecha=new Date();
        p1.setFecha(fecha);
        calendar.setTime(fecha);
        calendar.add(Calendar.MONTH,meses); //para sumar los meses de duracion del prestamo
        fecha_fin= calendar.getTime();
        p1.setFecha_fin(fecha_fin);
        p1.settipoCuenta(tc);
        Number n=df1.parse(importe);
        importe2=n.floatValue();
        importe2=importe2+(importe2*interes);
        p1.setImporte(importe2);
        p1.setInteres(interes);
        suc.insertaCuenta(p1);

        //Guardamos la instancia de la libreta de ahorro y el cliente
        this.persist(p1);
    }

    /**
     * @return the importe
     */
    public float getImporte() {
        return importe;
    }

    /**
     * @param importe the importe to set
     */
    public void setImporte(float importe) {
        this.importe = importe;
    }

    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();
        }
    }

  

}

