/*
 * 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 pe.siso.horario.MySqlDAO;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import pe.siso.horario.Beans.Centro;
import pe.siso.horario.DAO.CentroDAO;

/**
 *
 * @author fcelestino
 */
public class MySqlCentroDAO implements CentroDAO {

    @Override
    public ArrayList<Centro> listarCentro() throws Exception {
        ArrayList<Centro> lista = new ArrayList<Centro>();
        String base = "horario";
        Connection cnx = null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            Statement st = cnx.createStatement();

            String query = "SELECT centro.codcentro,centro.descentro,centro.codtipocentro,centro.estado,tipo_centro.destipocentro FROM centro "
                    + "INNER JOIN horarios_docente.tipo_centro on  tipo_centro.codtipocentro=centro.codtipocentro";
            // String query = "SELECT codcentro,descentro,codtipocentro,estado FROM encuestas.centro";

            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                Centro centro = new Centro();
                centro.setCodigoCentro(rs.getInt("codcentro"));
                centro.setNombreCentro(rs.getString("descentro"));
                centro.setEstadoCentro(rs.getInt("estado"));
                centro.setCodigoTipoCentro(rs.getInt("codtipocentro"));
                centro.setNombreTipoCentro(rs.getString("destipocentro"));
                lista.add(centro);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return lista;
    }

    @Override
    public ArrayList<Centro> listarCentro(String codigoTipoCentro) throws Exception {
        ArrayList<Centro> lista = new ArrayList<Centro>();
        String base = "horario";
        Connection cnx = null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            Statement st = cnx.createStatement();

            String query = "SELECT centro.codcentro,centro.descentro,centro.codtipocentro,centro.estado,tipo_centro.destipocentro FROM centro "
                    + "INNER JOIN tipo_centro on  tipo_centro.codtipocentro=centro.codtipocentro "
                    + "WHERE tipo_centro.codtipocentro='" + codigoTipoCentro + "'; ";
            //String query = "SELECT codcentro,descentro,codtipocentro,estado FROM encuestas.centro WHERE codtipocentro='"+codigoTipoCentro+"';";

            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                Centro centro = new Centro();
                centro.setCodigoCentro(rs.getInt("codcentro"));
                centro.setNombreCentro(rs.getString("descentro"));
                centro.setEstadoCentro(rs.getInt("estado"));
                centro.setCodigoTipoCentro(rs.getInt("codtipocentro"));
                centro.setNombreTipoCentro(rs.getString("destipocentro"));
                lista.add(centro);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return lista;
    }

    @Override
    public void registrarCentro(String nombreCentro, String CodigoTipoCentro) throws Exception {
        String base = "horario";
        Connection cnx = null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            Statement st = cnx.createStatement();

            String queryInsert = "INSERT INTO centro (descentro,codtipocentro,estado) VALUES ('" + nombreCentro + "','" + CodigoTipoCentro + "','1');";
            st.executeUpdate(queryInsert);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
    }

    @Override
    public void cambiarEstado(String dato, String codigoCentro) throws Exception {
        String base = "horario";
        Connection cnx = null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            Statement st = cnx.createStatement();

            String queryInsert = "UPDATE centro SET estado='" + dato + "' WHERE codcentro='" + codigoCentro + "';";
            st.executeUpdate(queryInsert);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
    }

    @Override
    public ArrayList<Centro> cargarCentro(String codigoTipoCentro) throws Exception {
        ArrayList<Centro> lista = new ArrayList<Centro>();
        String base = "horario";
        Connection cnx = null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            Statement st = cnx.createStatement();

            String query = "SELECT codcentro,descentro,codtipocentro,estado FROM centro WHERE codtipocentro='" + codigoTipoCentro + "' and estado='1';";

            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                Centro centro = new Centro();
                centro.setCodigoCentro(rs.getInt("codcentro"));
                centro.setNombreCentro(rs.getString("descentro"));
                centro.setEstadoCentro(rs.getInt("estado"));
                centro.setCodigoTipoCentro(rs.getInt("codtipocentro"));
                lista.add(centro);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return lista;
    }

    @Override
    public Centro nombreCentro(String codCentro) throws Exception {
        String base = "horario";

        Centro centro = new Centro();
        Connection cnx = null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            Statement st = cnx.createStatement();
            String query = "SELECT centro.descentro, tipo_centro.destipocentro, "
                    + "centro.codcentro, "
                    + "tipo_centro.codtipocentro "
                    + "FROM "
                    + "centro "
                    + "INNER JOIN tipo_centro ON centro.codtipocentro = tipo_centro.codtipocentro "
                    + "WHERE centro.codcentro='" + codCentro + "'";
            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                centro.setCodigoCentro(rs.getInt("codcentro"));
                centro.setNombreCentro(rs.getString("descentro"));
                centro.setNombreTipoCentro(rs.getString("destipocentro"));
                centro.setCodigoTipoCentro(rs.getInt("codtipocentro"));

            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return centro;

    }

    @Override
    public void actualizar(String codCentro, String nombre) throws Exception {
        String base = "horario";
        Connection cnx = null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            Statement st = cnx.createStatement();
            String queryInsert = "UPDATE centro SET descentro='" + nombre + "' WHERE codcentro='" + codCentro + "';";
            st.executeUpdate(queryInsert);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
    }

    @Override
    public ArrayList<Centro> cargarCentro(String codigoSede, String codigoTipoCentro) throws Exception {
        ArrayList<Centro> lista = new ArrayList<Centro>();
        String base = "horario";
        Connection cnx = null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            Statement st = cnx.createStatement();

            String query = "SELECT DISTINCT aula.codlocal,centro.codcentro,centro.descentro "
                    + "from aula "
                    + "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
                    + "INNER JOIN centro on centro.codcentro=aula.cocentro "
                    + "WHERE aula.codlocal='" + codigoSede + "' AND tipo_centro.codtipocentro='" + codigoTipoCentro + "' and centro.estado='1'";

            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                Centro centro = new Centro();
                centro.setCodigoCentro(rs.getInt("codcentro"));
                centro.setNombreCentro(rs.getString("descentro"));
                lista.add(centro);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return lista;
    }

    @Override
    public int cantidadUsoCentro(String codCentro) throws Exception {
        String base = "horario";
        int dato = 0;
        Connection cnx = null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            Statement st = cnx.createStatement();
            String query = "SELECT count(*) as cant from nivel where codcentro='" + codCentro + "' and estado=1 ";
            ResultSet rs = st.executeQuery(query);

            if (rs.next()) {
                dato = rs.getInt("cant");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return dato;
    }

}
