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

/**
 *
 * @author fcelestino
 */
public class MySqlSedeDAO implements SedeDAO {

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

            String query = "SELECT cod_loc,des_loc,est_loc FROM sede WHERE est_loc='1' ORDER BY des_loc";

            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                Sede sede = new Sede();
                sede.setCodigoSede(rs.getInt("cod_loc"));
                sede.setNombreSede(rs.getString("des_loc"));
                sede.setEstadoSede(rs.getInt("est_loc"));
                lista.add(sede);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return lista;
    }

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

            String query = "SELECT cod_loc,des_loc,est_loc FROM sede WHERE est_loc='1' and cod_loc!='40' ORDER BY des_loc";

            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                Sede sede = new Sede();
                sede.setCodigoSede(rs.getInt("cod_loc"));
                sede.setNombreSede(rs.getString("des_loc"));
                sede.setEstadoSede(rs.getInt("est_loc"));
                lista.add(sede);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return lista;
    }

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

            String query = "SELECT cod_loc,des_loc,est_loc FROM sede WHERE est_loc='1' and cod_loc!='40' ORDER BY des_loc";

            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                Sede sede = new Sede();
                sede.setCodigoSede(rs.getInt("cod_loc"));
                sede.setNombreSede(rs.getString("des_loc"));
                sede.setEstadoSede(rs.getInt("est_loc"));
                lista.add(sede);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }
        return lista;
    }

    @Override
    public int obtenerCodigoSede(String cadenaAula) throws Exception {
        int dato = 0;
        Connection cnx = null;
        String base = "horario";
        Statement pst = null;
        ResultSet rs=null;
        try {
            cnx = MySqlDAOFactory.obtenerConexion(base);
            pst = cnx.createStatement();

            String query = "SELECT s.cod_loc FROM sede s\n" +
                "INNER JOIN aula a ON s.cod_loc=a.codlocal\n" +
                "where a.codaula in ('"+cadenaAula+"')\n" +
                "GROUP BY a.codlocal";
               
            System.out.println("query select codLocal " + query);
            rs = pst.executeQuery(query);
            while (rs.next()) {              
               dato = rs.getInt("cod_loc");
            }
            

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (cnx != null) {
                cnx.close();
            }
        }

        return dato;
    }

}
