/*
 * 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 funciones;

import accesodatos.ConjuntoResultado;
import entidades.Estudiose;
import accesodatos.*;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Miguel Mejia
 */
public class FEstudioSE {

    public static Estudiose obtenerdadocodigo(int codigo) throws Exception {
        Estudiose resp = new Estudiose();
        try {
            ArrayList<Parametro> lstp = new ArrayList<>();
            String sql = "Select * from estudiose where codigo = ? order by codigo desc;";
            lstp.add(new Parametro(1, codigo));
            ConjuntoResultado rs = AccesoDatos.ejecutaQuery(sql, lstp);
            if (rs != null) {
                resp = FEstudioSE.llenar(rs).get(0);
            }
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
        return resp;
    }

    public static Estudiose obtenerdadomatricula(int codigo) throws Exception {
        Estudiose resp = new Estudiose();
        try {
            ArrayList<Parametro> lstp = new ArrayList<>();
            String sql = "Select * from estudiose where matricula = ? order by codigo desc;";
            lstp.add(new Parametro(1, codigo));
            ConjuntoResultado rs = AccesoDatos.ejecutaQuery(sql, lstp);
            if (rs != null) {
                resp = FEstudioSE.llenar(rs).get(0);
            }
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
        return resp;
    }
    
    public static Estudiose obtenerdadomatriculaligero(int codigo) throws Exception {
        Estudiose resp = new Estudiose();
        try {
            ArrayList<Parametro> lstp = new ArrayList<>();
            String sql = "Select * from estudiose where matricula = ? order by codigo desc;";
            lstp.add(new Parametro(1, codigo));
            ConjuntoResultado rs = AccesoDatos.ejecutaQuery(sql, lstp);
            if (rs != null) {
                resp = FEstudioSE.llenarligero(rs).get(0);
            }
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
        return resp;
    }

    private static ArrayList<Estudiose> llenar(ConjuntoResultado rs) throws Exception {
        ArrayList<Estudiose> lstper = new ArrayList<>();
        try {
            while (rs.next()) {
                Estudiose tmp = new Estudiose(rs.getInt(0), rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9), rs.getString(10), rs.getString(11), Double.valueOf(rs.getString(12)), rs.getBoolean(13), rs.getString(14), Double.valueOf(rs.getString(15)), rs.getBoolean(16), rs.getBoolean(17), rs.getString(18), Double.valueOf(rs.getString(19)), rs.getBoolean(20), rs.getBoolean(21), rs.getBoolean(22), rs.getBoolean(23), rs.getString(24), FMatricula.obtenerdadocodigo(rs.getInt(25)), rs.getString(26), Double.valueOf(rs.getString(27)), rs.getString(28), rs.getString(29), rs.getString(30), rs.getString(31), rs.getBoolean(32), rs.getBoolean(33), rs.getString(34), rs.getString(35));
                lstper.add(tmp);
            }
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
        return lstper;
    }
    
    private static ArrayList<Estudiose> llenarligero(ConjuntoResultado rs) throws Exception {
        ArrayList<Estudiose> lstper = new ArrayList<>();
        try {
            while (rs.next()) {
                Estudiose tmp = new Estudiose(rs.getInt(0), rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9), rs.getString(10), rs.getString(11), Double.valueOf(rs.getString(12)), rs.getBoolean(13), rs.getString(14), Double.valueOf(rs.getString(15)), rs.getBoolean(16), rs.getBoolean(17), rs.getString(18), Double.valueOf(rs.getString(19)), rs.getBoolean(20), rs.getBoolean(21), rs.getBoolean(22), rs.getBoolean(23), rs.getString(24), null, rs.getString(26), Double.valueOf(rs.getString(27)), rs.getString(28), rs.getString(29), rs.getString(30), rs.getString(31), rs.getBoolean(32), rs.getBoolean(33), rs.getString(34), rs.getString(35));
                lstper.add(tmp);
            }
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
        return lstper;
    }

    public static ArrayList<Estudiose> obtener() throws Exception {
        ArrayList<Estudiose> resp = new ArrayList<>();
        try {
            String sql = "Select * from estudiose;";
            ConjuntoResultado rs = AccesoDatos.ejecutaQuery(sql);
            if (rs != null) {
                resp = llenar(rs);
            }
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
        return resp;
    }

    public static boolean Actualizar(Estudiose estudiose) throws Exception {
        boolean respuesta = false;
        try {
            ArrayList<Parametro> lstP = new ArrayList<>();
            String sql = "UPDATE estudiose SET papeleta=?, etnia=?, nacionalidad=?, religion=?, sector=?, \n"
                    + "       direccion2=?, sector2=?, telefono2=?, celular2=?, ciudad2=?, \n"
                    + "       meritos=?, promediog=?, trabaja=?, empresa=?, sueldo=?, discapacidad=?, \n"
                    + "       beca=?, tipobeca=?, monto=?, credito=?, vivienda=?, vehiculo=?, \n"
                    + "       enfermedadc=?, quien=?, matricula=?, conadis=?, porcentaje=?, \n"
                    + "       nombreenfermedad=?, tipo_discapacidad=?, motivo_beca=?, descripcion_discapacidad=?,"
                    + "       embarazo=?, enfermedad_propia=?, que_enfermedad_propia=?, molestias_enfermedad_propia=? WHERE codigo = ?";
            lstP.add(new Parametro(1, estudiose.getPapeleta()));
            lstP.add(new Parametro(2, estudiose.getEtnia()));
            lstP.add(new Parametro(3, estudiose.getNacionalidad()));
            lstP.add(new Parametro(4, estudiose.getReligion()));
            lstP.add(new Parametro(5, estudiose.getSector()));
            lstP.add(new Parametro(6, estudiose.getDireccion2()));
            lstP.add(new Parametro(7, estudiose.getSector2()));
            lstP.add(new Parametro(8, estudiose.getTelefono2()));
            lstP.add(new Parametro(9, estudiose.getCelular2()));
            lstP.add(new Parametro(10, estudiose.getCiudad2()));
            lstP.add(new Parametro(11, estudiose.getMeritos()));
            lstP.add(new Parametro(12, estudiose.getPromediog()));
            lstP.add(new Parametro(13, estudiose.getTrabaja()));
            lstP.add(new Parametro(14, estudiose.getEmpresa()));
            lstP.add(new Parametro(15, estudiose.getSueldo()));
            lstP.add(new Parametro(16, estudiose.getDiscapacidad()));
            lstP.add(new Parametro(17, estudiose.getBeca()));
            lstP.add(new Parametro(18, estudiose.getTipobeca()));
            lstP.add(new Parametro(19, estudiose.getMonto()));
            lstP.add(new Parametro(20, estudiose.getCredito()));
            lstP.add(new Parametro(21, estudiose.getVivienda()));
            lstP.add(new Parametro(22, estudiose.getVehiculo()));
            lstP.add(new Parametro(23, estudiose.getEnfermedadc()));
            lstP.add(new Parametro(24, estudiose.getQuien()));
            lstP.add(new Parametro(25, estudiose.getMatricula().getCodigo()));
            lstP.add(new Parametro(26, estudiose.getConadis()));
            lstP.add(new Parametro(27, estudiose.getPorcentaje()));
            lstP.add(new Parametro(28, estudiose.getNombreenfermedad()));
            lstP.add(new Parametro(29, estudiose.getTipoDiscapacidad()));
            lstP.add(new Parametro(30, estudiose.getMotivoBeca()));
            lstP.add(new Parametro(31, estudiose.getDescripcionDiscapacidad()));
            lstP.add(new Parametro(32, estudiose.getEmbarazo()));
            lstP.add(new Parametro(33, estudiose.getEnfermedad_propia()));
            lstP.add(new Parametro(34, estudiose.getDescripcion_enfermedad_propia()));
            lstP.add(new Parametro(35, estudiose.getMolestias_enfermedad_propia()));
            lstP.add(new Parametro(36, estudiose.getCodigo()));
            AccesoDatos.ejecutaComando1(sql, lstP);
        } catch (Exception exConec) {
            throw new Exception(exConec.getMessage());
        }
        return true;
    }

    public static boolean Eliminar(Estudiose estudiose) throws Exception {
        boolean eje = false;
        try {
            ArrayList<Parametro> lstP = new ArrayList<>();
            String sql = "Select * from f_delete_estudiose(?);";
            lstP.add(new Parametro(1, estudiose.getCodigo()));
            ConjuntoResultado rs = AccesoDatos.ejecutaQuery(sql, lstP);
            while (rs.next()) {
                if (rs.getString(0).equals("true")) {
                    eje = true;
                }
            }
        } catch (SQLException exConec) {
            throw new Exception(exConec.getMessage());
        }
        return eje;
    }

    public static int Insertar(Estudiose estudiose) throws Exception {
        int respuesta = 0;
        ArrayList<Parametro> lstP = new ArrayList<>();
        String sql = "INSERT INTO estudiose(papeleta, etnia, nacionalidad, religion, sector, direccion2, \n"
                + "            sector2, telefono2, celular2, ciudad2, meritos, promediog, trabaja, \n"
                + "            empresa, sueldo, discapacidad, beca, tipobeca, monto, credito, \n"
                + "            vivienda, vehiculo, enfermedadc, quien, matricula, conadis, porcentaje, \n"
                + "            nombreenfermedad, tipo_discapacidad, motivo_beca, descripcion_discapacidad, embarazo, enfermedad_propia, que_enfermedad_propia, molestias_enfermedad_propia) VALUES (?, ?, ?, ?, ?, ?, \n"
                + "            ?, ?, ?, ?, ?, ?, ?, \n"
                + "            ?, ?, ?, ?, ?, ?, ?, \n"
                + "            ?, ?, ?, ?, ?, ?, ?, \n"
                + "            ?, ?, ?, ?, ?, ?, ?, ?);";
        lstP.add(new Parametro(1, estudiose.getPapeleta()));
        lstP.add(new Parametro(2, estudiose.getEtnia()));
        lstP.add(new Parametro(3, estudiose.getNacionalidad()));
        lstP.add(new Parametro(4, estudiose.getReligion()));
        lstP.add(new Parametro(5, estudiose.getSector()));
        lstP.add(new Parametro(6, estudiose.getDireccion2()));
        lstP.add(new Parametro(7, estudiose.getSector2()));
        lstP.add(new Parametro(8, estudiose.getTelefono2()));
        lstP.add(new Parametro(9, estudiose.getCelular2()));
        lstP.add(new Parametro(10, estudiose.getCiudad2()));
        lstP.add(new Parametro(11, estudiose.getMeritos()));
        lstP.add(new Parametro(12, estudiose.getPromediog()));
        lstP.add(new Parametro(13, estudiose.getTrabaja()));
        lstP.add(new Parametro(14, estudiose.getEmpresa()));
        lstP.add(new Parametro(15, estudiose.getSueldo()));
        lstP.add(new Parametro(16, estudiose.getDiscapacidad()));
        lstP.add(new Parametro(17, estudiose.getBeca()));
        lstP.add(new Parametro(18, estudiose.getTipobeca()));
        lstP.add(new Parametro(19, estudiose.getMonto()));
        lstP.add(new Parametro(20, estudiose.getCredito()));
        lstP.add(new Parametro(21, estudiose.getVivienda()));
        lstP.add(new Parametro(22, estudiose.getVehiculo()));
        lstP.add(new Parametro(23, estudiose.getEnfermedadc()));
        lstP.add(new Parametro(24, estudiose.getQuien()));
        lstP.add(new Parametro(25, estudiose.getMatricula().getCodigo()));
        lstP.add(new Parametro(26, estudiose.getConadis()));
        lstP.add(new Parametro(27, estudiose.getPorcentaje()));
        lstP.add(new Parametro(28, estudiose.getNombreenfermedad()));
        lstP.add(new Parametro(29, estudiose.getTipoDiscapacidad()));
        lstP.add(new Parametro(30, estudiose.getMotivoBeca()));
        lstP.add(new Parametro(31, estudiose.getDescripcionDiscapacidad()));
        lstP.add(new Parametro(32, estudiose.getEmbarazo()));
        lstP.add(new Parametro(33, estudiose.getEnfermedad_propia()));
        lstP.add(new Parametro(34, estudiose.getDescripcion_enfermedad_propia()));
        lstP.add(new Parametro(35, estudiose.getMolestias_enfermedad_propia()));
        try {
            AccesoDatos.ejecutaComando(sql, lstP);
        } catch (Exception e) {
            respuesta = 0;
        }
        return respuesta;
    }
}
