/*
 * 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.TipoCentro;
import pe.siso.horario.DAO.TipoCentroDAO;

/**
 *
 * @author fcelestino
 */
public class MySqlTipoCentroDAO implements TipoCentroDAO {

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

            String query = "SELECT codtipocentro,destipocentro,estado FROM tipo_centro";

            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                TipoCentro tipocentro = new TipoCentro();
                tipocentro.setCodigoTipoCentro(rs.getInt("codtipocentro"));
                tipocentro.setNombreTipoCentro(rs.getString("destipocentro"));
                tipocentro.setEstadoTipoCentro(rs.getInt("estado"));
                lista.add(tipocentro);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return lista;
    }

    @Override
    public int registrarTipoCentro(String nombreTipoCentro) throws Exception {
        int dato = 0;
        String base = "horario";
        Connection cnx = null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            Statement st = cnx.createStatement();

            String queryConsulta = "SELECT count(*) as cant FROM tipo_centro WHERE destipocentro='" + nombreTipoCentro + "';";
            ResultSet rs = st.executeQuery(queryConsulta);

            while (rs.next()) {
                dato = rs.getInt("cant");
            }

            if (dato == 0) {
                String queryInsert = "INSERT INTO tipo_centro (destipocentro,estado) VALUES ('" + nombreTipoCentro + "','1');";
                st.executeUpdate(queryInsert);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return dato;
    }

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

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

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

            String query = "SELECT codtipocentro,destipocentro,estado FROM tipo_centro WHERE estado='1';";

            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                TipoCentro tipocentro = new TipoCentro();
                tipocentro.setCodigoTipoCentro(rs.getInt("codtipocentro"));
                tipocentro.setNombreTipoCentro(rs.getString("destipocentro"));
                tipocentro.setEstadoTipoCentro(rs.getInt("estado"));
                lista.add(tipocentro);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return lista;
    }

    @Override
    public TipoCentro NombreCentro(String codCentro) throws Exception {
        String base = "horario";
        TipoCentro tipo = new TipoCentro();
        Connection cnx = null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            Statement st = cnx.createStatement();

            String query = "select destipocentro from tipo_centro WHERE codtipocentro='" + codCentro + "'";

            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                tipo.setNombreTipoCentro(rs.getString("destipocentro"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return tipo;
    }

    @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 tipo_centro SET destipocentro='" + nombre + "' WHERE codtipocentro='" + codCentro + "';";
            st.executeUpdate(queryInsert);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
    }

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

            String query = "SELECT DISTINCT aula.codlocal,aula.codtipocentro,tipo_centro.destipocentro "
                    + "from aula "
                    + "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
                    + "WHERE aula.codlocal='" + codigoSede + "'";

            ResultSet rs = st.executeQuery(query);
            //System.out.println(query);
            while (rs.next()) {
                TipoCentro tipocentro = new TipoCentro();
                tipocentro.setCodigoTipoCentro(rs.getInt("codtipocentro"));
                tipocentro.setNombreTipoCentro(rs.getString("destipocentro"));
                lista.add(tipocentro);
            }
        } 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(*) cant from centro where codtipocentro=" + 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;
    }

}
