/*
 * 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.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import pe.siso.horario.Beans.Aula;
import pe.siso.horario.DAO.AulaDAO;

/**
 *
 * @author fcelestino
 */
public class MySqlAulaDAO implements AulaDAO {

	@Override
	public ArrayList<Aula> listaAulas(String codigoLocal, int inicio, int cantidad) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE sede.cod_loc='" + codigoLocal + "' and aula.anno and aula.estado='1' "
				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro, "
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno LIMIT " + inicio + "," + cantidad + "";

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setCodigoLocal(rs.getString("codlocal"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setCodigoTipoCentro(rs.getString("codtipocentro"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setCodigoCentro(rs.getString("cocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setCodigoNivel(rs.getString("codnivel"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setCodigoTipoGrado(rs.getString("codtipogrado"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setCodigoGrado(rs.getString("codgrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setCodigoSeccion(rs.getString("codseccion"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setEstadoAula(rs.getInt("estado"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public ArrayList<Aula> listaAulas(int inicio, int cantidad) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE aula.estado='1' and aula.anno  "
				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro, "
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno LIMIT " + inicio + "," + cantidad + "";

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setCodigoLocal(rs.getString("codlocal"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setCodigoTipoCentro(rs.getString("codtipocentro"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setCodigoCentro(rs.getString("cocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setCodigoNivel(rs.getString("codnivel"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setCodigoTipoGrado(rs.getString("codtipogrado"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setCodigoGrado(rs.getString("codgrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setCodigoSeccion(rs.getString("codseccion"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setEstadoAula(rs.getInt("estado"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public int registrarAula(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno, String nombreAula,int codPeriodo) throws Exception {
		int dato = 0;
		int resultado = 0;
		int codigoAula = 0;
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT count(*) as cant FROM aula WHERE anno and codlocal='" + codSede + "' and codtipocentro='" + codTipoCentro + "' and cocentro='" + codCentro + "' and codnivel='" + codNivel + "' "
				+ " and codtipogrado='" + codTipoGrado + "' and codgrado='" + codGrado + "' and codseccion='" + codSeccion + "' and codturno='" + codTurno +  "' and nombre='" + nombreAula + "' and periodo='"+codPeriodo+"'";
			System.out.println(query);
			ResultSet rs = st.executeQuery(query);

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

			if (dato == 0) {
				String queryInsert = "INSERT INTO aula (anno,codlocal,codtipocentro,cocentro,codnivel,codtipogrado,codgrado,codseccion,codturno,nombre,estado,periodo) VALUES (YEAR(CURDATE()),'" + codSede + "','" + codTipoCentro + "','" + codCentro + "','" + codNivel + "','" + codTipoGrado + "','" + codGrado + "','" + codSeccion + "','" + codTurno + "','" + nombreAula + "','1',"+codPeriodo+")";
				resultado = st.executeUpdate(queryInsert);

			} else {
				resultado = 100;
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return resultado;
	}

	@Override
	public String consultarAula(String codigoAula) throws Exception {
		String aula = "";
		String base = "horario";
		String aux_nombre_aula="";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE aula.codaula='" + codigoAula + "'  and aula.anno "
				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro, "
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno";

			ResultSet rs = st.executeQuery(query);
//			aux_nombre_aula=rs.getString("des_loc");
			while (rs.next()) {
	
				
				aula = rs.getString("des_loc") + " :: GRADO : " + rs.getString("desgrado") + " :: AULA : " + rs.getString("nombre") + " :: TURNO : " + rs.getString("desturno");
//				aula = rs.getString("des_loc");
//				aula = rs.getString("des_loc") + " :: " + rs.getString("destipocentro") + " :: " + rs.getString("desnivel") + " :: " + rs.getString("destipogrado") + " :: " + rs.getString("desgrado") + " :: " + rs.getString("desseccion") + " :: " + rs.getString("nombre") + " :: " + rs.getString("desturno");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return aula;
	}
	
	@Override
	public String consultarAulaSede(String codigoAula) throws Exception {
		String aula = "";
		String base = "horario";
		String aux_nombre_aula="";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE aula.codaula='" + codigoAula + "'  and aula.anno "
				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro, "
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno";

			ResultSet rs = st.executeQuery(query);
//			aux_nombre_aula=rs.getString("des_loc");
			while (rs.next()) {
	
				
				aula = rs.getString("des_loc");
//				aula = rs.getString("des_loc");
//				aula = rs.getString("des_loc") + " :: " + rs.getString("destipocentro") + " :: " + rs.getString("desnivel") + " :: " + rs.getString("destipogrado") + " :: " + rs.getString("desgrado") + " :: " + rs.getString("desseccion") + " :: " + rs.getString("nombre") + " :: " + rs.getString("desturno");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return aula;
	}

	@Override
	public String nombreCortoAula(String codigoAula) throws Exception {
		String nomAula = "";
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();
			String query = "SELECT \n"
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,aula.nombre FROM aula  \n"
				+ " INNER JOIN sede on sede.cod_loc=aula.codlocal  \n"
				+ " INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro  \n"
				+ " INNER JOIN centro on centro.codcentro=aula.cocentro  \n"
				+ " INNER JOIN nivel on nivel.codnivel=aula.codnivel  \n"
				+ " INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado  \n"
				+ " INNER JOIN grado on grado.codgrado=aula.codgrado  \n"
				+ " INNER JOIN seccion on seccion.codseccion=aula.codseccion  \n"
				+ " INNER JOIN turno on turno.codturno=aula.codturno  \n"
				+ " WHERE aula.codaula='" + codigoAula + "'  and aula.anno  \n"
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,  \n"
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno";

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				nomAula = rs.getString("desnivel") + "::" + rs.getString("destipogrado") + "::" + rs.getString("desgrado") + "::" + rs.getString("desseccion") + "::" + rs.getString("nombre");
//				aula = rs.getString("des_loc") + " :: " + rs.getString("destipocentro") + " :: " + rs.getString("desnivel") + " :: " + rs.getString("destipogrado") + " :: " + rs.getString("desgrado") + " :: " + rs.getString("desseccion") + " :: " + rs.getString("nombre") + " :: " + rs.getString("desturno");
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return nomAula;
	}

	@Override
	public Aula getAula(String codigoAula) throws Exception {
		Aula aula = new Aula();
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE aula.codaula='" + codigoAula + "'  and aula.anno "
				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro, "
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno";

			ResultSet rs = st.executeQuery(query);

			if (rs.next()) {
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombre(rs.getString("nombre"));
				aula.setNombreTurno(rs.getString("desturno"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return aula;
	}

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

			String query = "SELECT DISTINCT res.codaula,sede.des_loc,nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno "
				+ "FROM encuesta_detalle_resultado as res "
				+ "INNER JOIN aula ON res.codaula=aula.codaula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE res.est_det_res='1'  and aula.anno and aula.codlocal='" + codigoSede + "' and res.cod_enc='" + codigoEncuesta + "' "
				+ "ORDER BY nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno";

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public int consultarAula(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno) throws Exception {
		int dato = 0;
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT codaula FROM aula WHERE codlocal='" + codSede + "' AND codtipocentro='" + codTipoCentro + "' AND cocentro='" + codCentro + "' AND codnivel='" + codNivel + "' AND "
				+ " codtipogrado='" + codTipoGrado + "' AND codgrado='" + codGrado + "' AND codseccion='" + codSeccion + "' AND codturno='" + codTurno + "' AND estado='1'";

			ResultSet rs = st.executeQuery(query);

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

	@Override
	public int consultarAulaConNombre(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno, String nombre) throws Exception {
		int dato = 0;
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT codaula FROM aula WHERE codlocal='" + codSede + "' AND codtipocentro='" + codTipoCentro + "' AND cocentro='" + codCentro + "' AND codnivel='" + codNivel + "' AND "
				+ " codtipogrado='" + codTipoGrado + "' AND codgrado='" + codGrado + "' AND codseccion='" + codSeccion + "' AND codturno='" + codTurno + "' AND nombre='" + nombre + "' AND estado='1'";

			ResultSet rs = st.executeQuery(query);

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

	@Override
	public String cantidadUsuariosAula() throws Exception {
		String cantidad = "";
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT count(*) as cant FROM aula ";

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				cantidad = rs.getString("cant");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return cantidad;
	}

	@Override
	public void crearUsuarioEncuestador(String codigoSede, String codigoAula, String nombreUsuario, String usuario, String clave, String cantidad) throws Exception {
		String base = "encuentas";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "INSERT INTO usuario (cod_tip_usu,cod_loc,codaula,ani_usu,nom_usu,usu_usu,cla_usu,est_usu) VALUES ('4','" + codigoSede + "','" + codigoAula + "',YEAR(CURDATE()),'" + nombreUsuario + "','" + usuario + "','" + clave + "','1')";
			st.executeUpdate(query);
			System.out.println(query);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
	}

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

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE aula.estado='1' and aula.anno and  nivel.codnivel not in (1,2) "
				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro, "
				+ "nivel.desnivel,grado.desgrado,tipo_grado.destipogrado,seccion.desseccion,turno.desturno ";

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setCodigoLocal(rs.getString("codlocal"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setCodigoTipoCentro(rs.getString("codtipocentro"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setCodigoCentro(rs.getString("cocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setCodigoNivel(rs.getString("codnivel"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setCodigoTipoGrado(rs.getString("codtipogrado"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setCodigoGrado(rs.getString("codgrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setCodigoSeccion(rs.getString("codseccion"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setEstadoAula(rs.getInt("estado"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

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

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE sede.cod_loc='" + codigoLocal + "' and aula.anno and nivel.codnivel not in (1,2) and aula.estado='1' "
				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro, "
				+ "nivel.desnivel,grado.desgrado,tipo_grado.destipogrado,seccion.desseccion,turno.desturno ";

			System.out.println(query);

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setCodigoLocal(rs.getString("codlocal"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setCodigoTipoCentro(rs.getString("codtipocentro"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setCodigoCentro(rs.getString("cocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setCodigoNivel(rs.getString("codnivel"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setCodigoTipoGrado(rs.getString("codtipogrado"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setCodigoGrado(rs.getString("codgrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setCodigoSeccion(rs.getString("codseccion"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setEstadoAula(rs.getInt("estado"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public ArrayList<Aula> listarAulasBloque(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,  "
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,  "
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado FROM aula   "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal   "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro   "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro   "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel   "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado   "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado   "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion   "
				+ "INNER JOIN turno on turno.codturno=aula.codturno  WHERE ";
			if (!codSede.equals("") && codTipoCentro.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " aula.codlocal='" + codSede + "' and ";
				}
			} else if (!codTipoCentro.equals("") && codCentro.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and ";
			} else if (!codCentro.equals("") && codNivel.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and ";
			} else if (!codNivel.equals("") && codTipoGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and  ";
			} else if (!codTipoGrado.equals("") && codGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and  ";
			} else if (!codGrado.equals("") && codSeccion.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and  ";
			} else if (!codSeccion.equals("") && codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and  ";
			} else if (!codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and aula.codturno='" + codTurno + "' and  ";
			}

			query += " aula.estado='1' and aula.anno and nivel.codnivel not in (1,2) "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,turno.desturno,seccion.desseccion";
			System.out.println("consulta busqueda-->" + query);

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setCodigoLocal(rs.getString("codlocal"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setCodigoTipoCentro(rs.getString("codtipocentro"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setCodigoCentro(rs.getString("cocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setCodigoNivel(rs.getString("codnivel"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setCodigoTipoGrado(rs.getString("codtipogrado"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setCodigoGrado(rs.getString("codgrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setCodigoSeccion(rs.getString("codseccion"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setEstadoAula(rs.getInt("estado"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public ArrayList<Aula> listarAulasHorario(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno, int inicio, int cantidad) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT horario_grupo.codaula,horario_grupo.cod_gru,sede.des_loc,tipo_centro.destipocentro,centro.descentro,nivel.desnivel, "
				+ "tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,turno.codturno  "
				+ "FROM horario_grupo "
				+ "INNER JOIN aula on aula.codaula=horario_grupo.codaula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno WHERE ";
			if (!codSede.equals("") && codTipoCentro.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " aula.codlocal='" + codSede + "' and ";
				}
			} else if (!codTipoCentro.equals("") && codCentro.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and ";
			} else if (!codCentro.equals("") && codNivel.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and ";
			} else if (!codNivel.equals("") && codTipoGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and  ";
			} else if (!codTipoGrado.equals("") && codGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and  ";
			} else if (!codGrado.equals("") && codSeccion.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and  ";
			} else if (!codSeccion.equals("") && codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and  ";
			} else if (!codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and aula.codturno='" + codTurno + "' and  ";
			}

			query += "  nivel.codnivel not in (1,2) "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno LIMIT " + inicio + "," + cantidad + "";

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setCodigoTurno(rs.getString("codturno"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;

	}

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

			String query = "SELECT sede.cod_loc,turno.codturno,horario_grupo.codaula,horario_grupo.cod_gru,sede.des_loc,tipo_centro.destipocentro,centro.descentro,nivel.desnivel,  "
				+ "                    tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno "
				+ "                    FROM horario_grupo  "
				+ "                    INNER JOIN aula on aula.codaula=horario_grupo.codaula "
				+ "                    INNER JOIN sede on sede.cod_loc=aula.codlocal  "
				+ "                    INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro  "
				+ "                    INNER JOIN centro on centro.codcentro=aula.cocentro  "
				+ "                    INNER JOIN nivel on nivel.codnivel=aula.codnivel  "
				+ "                    INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "                    INNER JOIN grado on grado.codgrado=aula.codgrado  "
				+ "                    INNER JOIN seccion on seccion.codseccion=aula.codseccion  "
				+ "                    INNER JOIN turno on turno.codturno=aula.codturno "
				+ "                    WHERE  ";
			if (!codSede.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " sede.cod_loc='" + codSede + "' and ";
				}
			}

			query += " nivel.codnivel not in (1,2) "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno";
			System.out.println(query);
			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setCodigoTurno(rs.getString("codturno"));

				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public ArrayList<Aula> listaAulasDirage(String codigoLocal, int inicio, int cantitad) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE sede.cod_loc='" + codigoLocal + "' and aula.anno and nivel.codnivel not in (1,2) and aula.estado='1' "
				+ "ORDER BY aula.codaula DESC "
				+ " LIMIT " + inicio + ", " + cantitad + " ";

			// QUERY SIN DESC QUE ESTABA ANTES QUE EL DE ARRIBA
//			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
//				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
//				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula "
//				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
//				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
//				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
//				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
//				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
//				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
//				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
//				+ "INNER JOIN turno on turno.codturno=aula.codturno "
//				+ "WHERE sede.cod_loc='" + codigoLocal + "' and aula.anno=YEAR(CURDATE()) and nivel.codnivel not in (1,2) and aula.estado='1' "
//				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro, "
//				+ "nivel.desnivel,grado.desgrado,tipo_grado.destipogrado,seccion.desseccion,turno.desturno "
//				+ " LIMIT " + inicio + ", " + cantitad + " ";
			System.out.println(query);

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setCodigoLocal(rs.getString("codlocal"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setCodigoTipoCentro(rs.getString("codtipocentro"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setCodigoCentro(rs.getString("cocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setCodigoNivel(rs.getString("codnivel"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setCodigoTipoGrado(rs.getString("codtipogrado"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setCodigoGrado(rs.getString("codgrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setCodigoSeccion(rs.getString("codseccion"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setEstadoAula(rs.getInt("estado"));
				aula.setNombre(rs.getString("nombre"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public ArrayList<Aula> listaAulasDirage(int inicio, int cantitad) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE aula.estado='1' and aula.anno and  nivel.codnivel not in (1,2) "
				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro, "
				+ "nivel.desnivel,grado.desgrado,tipo_grado.destipogrado,seccion.desseccion,turno.desturno DESC "
				+ " LIMIT " + inicio + ", " + cantitad + "  ";

//       String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
//				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
//				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula "
//				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
//				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
//				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
//				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
//				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
//				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
//				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
//				+ "INNER JOIN turno on turno.codturno=aula.codturno "
//				+ "WHERE aula.estado='1' and aula.anno=YEAR(CURDATE()) and  nivel.codnivel not in (1,2) "
//				+ "ORDER BY aula.codaula desc "
//			
//				+ " LIMIT " + inicio + ", " + cantitad + " ";
			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setCodigoLocal(rs.getString("codlocal"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setCodigoTipoCentro(rs.getString("codtipocentro"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setCodigoCentro(rs.getString("cocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setCodigoNivel(rs.getString("codnivel"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setCodigoTipoGrado(rs.getString("codtipogrado"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setCodigoGrado(rs.getString("codgrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setCodigoSeccion(rs.getString("codseccion"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setNombre(rs.getString("nombre"));
				aula.setEstadoAula(rs.getInt("estado"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

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

			String query = "SELECT count(*) as cant FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE sede.cod_loc='" + codigoLocal + "' and aula.anno and nivel.codnivel not in (1,2) and aula.estado='1' ";

			ResultSet rs = st.executeQuery(query);

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

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

			String query = "SELECT count(*) as cant FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE aula.estado='1' and aula.anno and  nivel.codnivel not in (1,2) ";

			ResultSet rs = st.executeQuery(query);

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

	@Override
	public ArrayList<Aula> listarAulasBloque(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno, int inicio, int cantidad) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,  "
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,  "
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula   "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal   "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro   "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro   "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel   "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado   "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado   "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion   "
				+ "INNER JOIN turno on turno.codturno=aula.codturno  WHERE ";
			if (!codSede.equals("") && codTipoCentro.equals("")) {
				if (codSede.equals("todo") || codSede.equals("todo2")) {
					query += " ";
				} else {
					query += " aula.codlocal='" + codSede + "' and ";
				}
			} else if (!codTipoCentro.equals("") && codCentro.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and ";
			} else if (!codCentro.equals("") && codNivel.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and ";
			} else if (!codNivel.equals("") && codTipoGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and  ";
			} else if (!codTipoGrado.equals("") && codGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and  ";
			} else if (!codGrado.equals("") && codSeccion.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and  ";
			} else if (!codSeccion.equals("") && codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and  ";
			} else if (!codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and aula.codturno='" + codTurno + "' and  ";
			}

			query += " aula.estado='1' and aula.anno and nivel.codnivel not in (1,2) "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,turno.desturno,seccion.desseccion LIMIT " + inicio + "," + cantidad + " ";
			System.out.println(query);

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setCodigoLocal(rs.getString("codlocal"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setCodigoTipoCentro(rs.getString("codtipocentro"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setCodigoCentro(rs.getString("cocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setCodigoNivel(rs.getString("codnivel"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setCodigoTipoGrado(rs.getString("codtipogrado"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setCodigoGrado(rs.getString("codgrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setCodigoSeccion(rs.getString("codseccion"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setNombre(rs.getString("nombre"));
				aula.setEstadoAula(rs.getInt("estado"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public int cantlistarAulasBloque(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno) throws Exception {
		int dato = 0;
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT count(*) as cant FROM aula   "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal   "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro   "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro   "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel   "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado   "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado   "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion   "
				+ "INNER JOIN turno on turno.codturno=aula.codturno  WHERE ";
			if (!codSede.equals("") && codTipoCentro.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " aula.codlocal='" + codSede + "' and ";
				}
			} else if (!codTipoCentro.equals("") && codCentro.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and ";
			} else if (!codCentro.equals("") && codNivel.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and ";
			} else if (!codNivel.equals("") && codTipoGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and  ";
			} else if (!codTipoGrado.equals("") && codGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and  ";
			} else if (!codGrado.equals("") && codSeccion.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and  ";
			} else if (!codSeccion.equals("") && codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and  ";
			} else if (!codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and aula.codturno='" + codTurno + "' and  ";
			}

			query += " aula.estado='1' and aula.anno and nivel.codnivel not in (1,2) "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,turno.desturno,seccion.desseccion";
			System.out.println(query);

			ResultSet rs = st.executeQuery(query);

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

	@Override
	public int cantlistarAulasHorario(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno) throws Exception {
		int dato = 0;
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT count(*) as cant "
				+ "FROM horario_grupo "
				+ "INNER JOIN aula on aula.codaula=horario_grupo.codaula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno WHERE ";
			if (!codSede.equals("") && codTipoCentro.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " aula.codlocal='" + codSede + "' and ";
				}
			} else if (!codTipoCentro.equals("") && codCentro.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and ";
			} else if (!codCentro.equals("") && codNivel.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and ";
			} else if (!codNivel.equals("") && codTipoGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and  ";
			} else if (!codTipoGrado.equals("") && codGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and  ";
			} else if (!codGrado.equals("") && codSeccion.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and  ";
			} else if (!codSeccion.equals("") && codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and  ";
			} else if (!codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and aula.codturno='" + codTurno + "' and  ";
			}

			query += "  nivel.codnivel not in (1,2) "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno ";
			System.out.println(query);

			ResultSet rs = st.executeQuery(query);

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

	@Override
	public ArrayList<Aula> reporteAulasHorario(String codSede, int pagina, int cantidad) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT sede.cod_loc,turno.codturno,horario_grupo.codaula,horario_grupo.cod_gru,sede.des_loc,tipo_centro.destipocentro,centro.descentro,nivel.desnivel,  "
				+ "                    tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno "
				+ "                    FROM horario_grupo  "
				+ "                    INNER JOIN aula on aula.codaula=horario_grupo.codaula "
				+ "                    INNER JOIN sede on sede.cod_loc=aula.codlocal  "
				+ "                    INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro  "
				+ "                    INNER JOIN centro on centro.codcentro=aula.cocentro  "
				+ "                    INNER JOIN nivel on nivel.codnivel=aula.codnivel  "
				+ "                    INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "                    INNER JOIN grado on grado.codgrado=aula.codgrado  "
				+ "                    INNER JOIN seccion on seccion.codseccion=aula.codseccion  "
				+ "                    INNER JOIN turno on turno.codturno=aula.codturno "
				+ "                    WHERE  ";
			if (!codSede.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " sede.cod_loc='" + codSede + "' and ";
				}
			}

			query += " nivel.codnivel not in (1,2) "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno LIMIT " + pagina + "," + cantidad + "  ";
			System.out.println(query);
			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setCodigoLocal(rs.getString("cod_loc"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public int cantidadreporteAulasHorario(String codSede) throws Exception {
		int dato = 0;
		String base = "horario";
		Connection cnx = null;
		try {

			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = " SELECT count(*) as cant "
				+ "                    FROM horario_grupo  "
				+ "                    INNER JOIN aula on aula.codaula=horario_grupo.codaula "
				+ "                    INNER JOIN sede on sede.cod_loc=aula.codlocal  "
				+ "                    INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro  "
				+ "                    INNER JOIN centro on centro.codcentro=aula.cocentro  "
				+ "                    INNER JOIN nivel on nivel.codnivel=aula.codnivel  "
				+ "                    INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "                    INNER JOIN grado on grado.codgrado=aula.codgrado  "
				+ "                    INNER JOIN seccion on seccion.codseccion=aula.codseccion  "
				+ "                    INNER JOIN turno on turno.codturno=aula.codturno "
				+ "                    WHERE  ";
			if (!codSede.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " sede.cod_loc='" + codSede + "' and ";
				}
			}

			query += " nivel.codnivel not in (1,2) ";
			System.out.println(query);
			ResultSet rs = st.executeQuery(query);

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

	@Override
	public int CantlistaAulas(String codigoLocal) throws Exception {
		int cant = 0;
		String base = "horario";
		Connection cnx = null;
		try {

			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT count(*) as cant FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE sede.cod_loc='" + codigoLocal + "' and aula.anno  and aula.estado='1' ";

			ResultSet rs = st.executeQuery(query);
			//System.out.println( "cantidad2--->"+cant);
			if (rs.next()) {
				cant = rs.getInt("cant");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return cant;

	}

	@Override
	public int CantlistaAulas() throws Exception {
		int cant = 0;
		String base = "horario";
		Connection cnx = null;
		try {

			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = " SELECT count(*) as cantidad FROM aula  "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal  "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado  "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion  "
				+ "INNER JOIN turno on turno.codturno=aula.codturno  "
				+ "WHERE aula.estado='1' ";

			ResultSet rs = st.executeQuery(query);

			if (rs.next()) {
				cant = rs.getInt("cantidad");
				//System.out.println( "cantidad--->"+cant); 
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return cant;

	}

	@Override
	public ArrayList<Aula> listaAulas() throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {

			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE aula.estado='1' and aula.anno  "
				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro, "
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno ";

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setCodigoLocal(rs.getString("codlocal"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setCodigoTipoCentro(rs.getString("codtipocentro"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setCodigoCentro(rs.getString("cocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setCodigoNivel(rs.getString("codnivel"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setCodigoTipoGrado(rs.getString("codtipogrado"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setCodigoGrado(rs.getString("codgrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setCodigoSeccion(rs.getString("codseccion"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setEstadoAula(rs.getInt("estado"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public ArrayList<Aula> listarAulasHorario(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {

			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT horario_grupo.codaula,horario_grupo.cod_gru,sede.des_loc,tipo_centro.destipocentro,centro.descentro,nivel.desnivel, "
				+ "tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,turno.codturno  "
				+ "FROM horario_grupo "
				+ "INNER JOIN aula on aula.codaula=horario_grupo.codaula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno WHERE ";
			if (!codSede.equals("") && codTipoCentro.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " aula.codlocal='" + codSede + "' and ";
				}
			} else if (!codTipoCentro.equals("") && codCentro.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and ";
			} else if (!codCentro.equals("") && codNivel.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and ";
			} else if (!codNivel.equals("") && codTipoGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and  ";
			} else if (!codTipoGrado.equals("") && codGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and  ";
			} else if (!codGrado.equals("") && codSeccion.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and  ";
			} else if (!codSeccion.equals("") && codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and  ";
			} else if (!codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and aula.codturno='" + codTurno + "' and  ";
			}

			query += "  nivel.codnivel not in (1,2) "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno ";

			System.out.println(query);
			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setCodigoTurno(rs.getString("codturno"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public ArrayList<Aula> reporteAulasHorario(String codSede, String codAula) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {

			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT sede.cod_loc,turno.codturno,horario_grupo.codaula,horario_grupo.cod_gru,sede.des_loc,tipo_centro.destipocentro,centro.descentro,nivel.desnivel,  "
				+ "                    tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno "
				+ "                    FROM horario_grupo  "
				+ "                    INNER JOIN aula on aula.codaula=horario_grupo.codaula "
				+ "                    INNER JOIN sede on sede.cod_loc=aula.codlocal  "
				+ "                    INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro  "
				+ "                    INNER JOIN centro on centro.codcentro=aula.cocentro  "
				+ "                    INNER JOIN nivel on nivel.codnivel=aula.codnivel  "
				+ "                    INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "                    INNER JOIN grado on grado.codgrado=aula.codgrado  "
				+ "                    INNER JOIN seccion on seccion.codseccion=aula.codseccion  "
				+ "                    INNER JOIN turno on turno.codturno=aula.codturno "
				+ "                    WHERE  ";
			if (!codSede.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " sede.cod_loc='" + codSede + "' and  aula.codaula='" + codAula + "' and ";
				}
			}

			query += " nivel.codnivel not in (1,2)  "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno  ";
			System.out.println(query);
			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setCodigoLocal(rs.getString("cod_loc"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public ArrayList<Aula> listarAulasHorario(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno, String periodo) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {

			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT DISTINCT horario_curso_docente.codaula,horario_curso_docente.codGru,sede.des_loc,tipo_centro.destipocentro,centro.descentro,nivel.desnivel, "
				+ "tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,turno.codturno   "
				+ "FROM horario_curso_docente INNER JOIN aula on aula.codaula=horario_curso_docente.codAula  "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal  "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro  "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro  "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel  "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado  "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado  "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion  "
				+ "INNER JOIN turno on turno.codturno=aula.codturno  "
				+ "WHERE   ";
			if (!codSede.equals("") && codTipoCentro.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " aula.codlocal='" + codSede + "' and ";
				}
			} else if (!codTipoCentro.equals("") && codCentro.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and ";
			} else if (!codCentro.equals("") && codNivel.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and ";
			} else if (!codNivel.equals("") && codTipoGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and  ";
			} else if (!codTipoGrado.equals("") && codGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and  ";
			} else if (!codGrado.equals("") && codSeccion.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and  ";
			} else if (!codSeccion.equals("") && codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and  ";
			} else if (!codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and aula.codturno='" + codTurno + "' and  ";
			}

			query += "  nivel.codnivel not in (1,2) AND cod_per='" + periodo + "' "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno ";

			System.out.println("queryExpo--->> " + query);
			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setCodigoTurno(rs.getString("codturno"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public ArrayList<Aula> reporteAulasHorarioPeriodo(String codSede, String periodo, int pagina, int cantidad) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {

			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT DISTINCT sede.cod_loc,turno.codturno,horario_curso_docente.codAula,horario_curso_docente.codGru,sede.des_loc,tipo_centro.destipocentro,centro.descentro,nivel.desnivel,  "
				+ "                    tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno "
				+ "                    FROM horario_curso_docente  "
				+ "                    INNER JOIN aula on aula.codaula=horario_curso_docente.codaula  "
				+ "                    INNER JOIN sede on sede.cod_loc=aula.codlocal  "
				+ "                    INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro  "
				+ "                    INNER JOIN centro on centro.codcentro=aula.cocentro  "
				+ "                    INNER JOIN nivel on nivel.codnivel=aula.codnivel  "
				+ "                    INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "                    INNER JOIN grado on grado.codgrado=aula.codgrado  "
				+ "                    INNER JOIN seccion on seccion.codseccion=aula.codseccion  "
				+ "                    INNER JOIN turno on turno.codturno=aula.codturno "
				+ "                    WHERE  ";
			if (!codSede.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " sede.cod_loc='" + codSede + "'  and ";
				}
			}

			query += " nivel.codnivel not in (1,2) and horario_curso_docente.cod_per='" + periodo + "' "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno LIMIT " + pagina + "," + cantidad + "  ";
			System.out.println(">>--->>> " + query);
			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setCodigoLocal(rs.getString("cod_loc"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public ArrayList<Aula> reporteAulasHorarioPeriodo(String codSede, String periodo) throws Exception {
		ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {

			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT DISTINCT sede.cod_loc,turno.codturno,horario_curso_docente.codAula,horario_curso_docente.codGru,sede.des_loc,tipo_centro.destipocentro,centro.descentro,nivel.desnivel,  "
				+ "                    tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno "
				+ "                    FROM horario_curso_docente  "
				+ "                    INNER JOIN aula on aula.codaula=horario_curso_docente.codaula  "
				+ "                    INNER JOIN sede on sede.cod_loc=aula.codlocal  "
				+ "                    INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro  "
				+ "                    INNER JOIN centro on centro.codcentro=aula.cocentro  "
				+ "                    INNER JOIN nivel on nivel.codnivel=aula.codnivel  "
				+ "                    INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "                    INNER JOIN grado on grado.codgrado=aula.codgrado  "
				+ "                    INNER JOIN seccion on seccion.codseccion=aula.codseccion  "
				+ "                    INNER JOIN turno on turno.codturno=aula.codturno "
				+ "                    WHERE  ";
			if (!codSede.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " sede.cod_loc='" + codSede + "' and ";
				}
			}

			query += " nivel.codnivel not in (1,2) and horario_curso_docente.cod_per='" + periodo + "' "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno";
			System.out.println(query);
			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setCodigoTurno(rs.getString("codturno"));

				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public int cantidadreporteAulasHorario(String codSede, String periodo) throws Exception {
		int dato = 0;
		String base = "horario";
		Connection cnx = null;
		try {

			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = " SELECT count(*) as cant "
				+ "                    FROM horario_grupo  "
				+ "                    INNER JOIN aula on aula.codaula=horario_grupo.codaula "
				+ "                    INNER JOIN sede on sede.cod_loc=aula.codlocal  "
				+ "                    INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro  "
				+ "                    INNER JOIN centro on centro.codcentro=aula.cocentro  "
				+ "                    INNER JOIN nivel on nivel.codnivel=aula.codnivel  "
				+ "                    INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "                    INNER JOIN grado on grado.codgrado=aula.codgrado  "
				+ "                    INNER JOIN seccion on seccion.codseccion=aula.codseccion  "
				+ "                    INNER JOIN turno on turno.codturno=aula.codturno "
				+ "                    WHERE  ";
			if (!codSede.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " sede.cod_loc='" + codSede + "' and ";
				}
			}

			query += " nivel.codnivel not in (1,2)  and horario_curso_docente.cod_per='" + periodo + "'   ";
			System.out.println(query);
			ResultSet rs = st.executeQuery(query);

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

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

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,   "
				+ " aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula    "
				+ " INNER JOIN sede on sede.cod_loc=aula.codlocal    "
				+ " INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro    "
				+ " INNER JOIN centro on centro.codcentro=aula.cocentro    "
				+ " INNER JOIN nivel on nivel.codnivel=aula.codnivel    "
				+ " INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado    "
				+ " INNER JOIN grado on grado.codgrado=aula.codgrado    "
				+ " INNER JOIN seccion on seccion.codseccion=aula.codseccion    "
				+ " INNER JOIN turno on turno.codturno=aula.codturno    "
				+ " WHERE aula.codaula IN (" + aulas + ")    "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,    "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,turno.desturno,seccion.desseccion";
			System.out.println("lista aula : " + query);
			ResultSet rs = st.executeQuery(query);
			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setNombre(rs.getString("nombre"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;

	}

	@Override
	public ArrayList<Aula> listarDatosHorairo(String codSede, String periodo) throws Exception {
		String base = "horario";
		ArrayList<Aula> lista = new ArrayList<Aula>();
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();
			String query = "SELECT  \n"
				+ "  h.codAula,  \n"
				+ "  h.codGru,\n"
				+ "  h.cod_gru_aul,  \n"
				+ "  gh.max_gru,  \n"
				+ "  gh.cadena,  \n"
				+ "  s.des_loc,  \n"
				+ "  tc.destipocentro,  \n"
				+ "  c.descentro,  \n"
				+ "  n.desnivel,  \n"
				+ "  tg.destipogrado,  \n"
				+ "  g.desgrado,  \n"
				+ "  sc.desseccion,  \n"
				+ "  t.desturno \n"
				+ "  FROM  \n"
				+ "  horario_curso_docente as h  \n"
				+ "   INNER JOIN \n"
				+ "(SELECT tbl.cod_aula,a.codlocal,a.codtipocentro,a.cocentro,\n"
				+ "a.codnivel,a.codtipogrado,a.codgrado,a.codseccion,a.codturno\n"
				+ " FROM (\n"
				+ "SELECT strSplit(cad_aul,',',row) cod_aula\n"
				+ "FROM \n"
				+ "(SELECT @i := @i+1 AS row FROM INFORMATION_SCHEMA.COLUMNS, (SELECT @i := 0) t) T,\n"
				+ "(\n"
				+ "SELECT g.cad_aul,g.cantidad\n"
				+ "FROM horario_curso_docente h\n"
				+ "INNER JOIN aula a ON h.codAula=a.codaula\n"
				+ "INNER JOIN grupo_aulas g ON h.cod_gru_aul=g.cod_gru_aul\n"
				+ "WHERE h.cod_per='"+periodo+"'\n"
				+ "AND h.est_hcd=1\n"
				+ "AND a.codlocal='"+codSede+"'\n"
				+ "GROUP BY h.cod_gru_aul,a.codlocal\n"
				+ ") g\n"
				+ "WHERE row <= g.cantidad ) tbl\n"
				+ "INNER JOIN aula a ON tbl.cod_aula=a.codaula ) a \n"
				+ "ON h.codAula=a.cod_aula\n"
				+ "\n"
				+ "INNER JOIN sede s ON s.cod_loc = a.codlocal  \n"
				+ "  INNER JOIN tipo_centro tc ON tc.codtipocentro = a.codtipocentro  \n"
				+ "  INNER JOIN centro c ON c.codcentro = a.cocentro  \n"
				+ "  INNER JOIN nivel n ON n.codnivel = a.codnivel  \n"
				+ "  INNER JOIN tipo_grado tg ON tg.codtipogrado = a.codtipogrado  \n"
				+ "  INNER JOIN grado g ON g.codgrado = a.codgrado  \n"
				+ "  INNER JOIN seccion sc ON sc.codseccion = a.codseccion  \n"
				+ "  INNER JOIN turno t ON t.codturno = a.codturno  \n"
				+ "\n"
				+ "  INNER JOIN grupo_horario as gh on gh.cod_gru=h.codGru  \n"
				+ "  WHERE h.cod_per='"+periodo+"' \n"
				+ "  GROUP BY a.cod_Aula,h.codGru \n"
				+ "  ORDER BY h.cod_gru_aul,s.des_loc,tg.destipogrado,g.desgrado,t.desturno,h.codGru,\n"
				+ "tc.destipocentro,h.codGru,c.descentro,n.desnivel,h.codAula,sc.desseccion ";

			ResultSet rs = st.executeQuery(query);
			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codAula"));
				aula.setCodigoGrupo(rs.getString("codGru"));
				aula.setMaxGrupo(rs.getInt("max_gru"));
				aula.setCadena(rs.getString("cadena"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				lista.add(aula);
			}
                        
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;

	}

	@Override
	public ArrayList<Aula> listarDatosHorairo(String periodo) throws Exception {
		String base = "horario";
		ArrayList<Aula> lista = new ArrayList<Aula>();
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();
			String query = "SELECT  "
				+ "hcd.codAula,  "
				+ "hcd.codGru,  "
				+ "gh.max_gru,  "
				+ "gh.cadena,  "
				+ "sede.des_loc,  "
				+ "tipo_centro.destipocentro,  "
				+ "centro.descentro,  "
				+ "nivel.desnivel,  "
				+ "tipo_grado.destipogrado,  "
				+ "grado.desgrado,  "
				+ "seccion.desseccion,  "
				+ "turno.desturno  "
				+ "FROM  "
				+ "horario_curso_docente as hcd  "
				+ "INNER JOIN aula ON aula.codaula = hcd.codAula  "
				+ "INNER JOIN sede ON sede.cod_loc = aula.codlocal  "
				+ "INNER JOIN tipo_centro ON tipo_centro.codtipocentro = aula.codtipocentro  "
				+ "INNER JOIN centro ON centro.codcentro = aula.cocentro  "
				+ "INNER JOIN nivel ON nivel.codnivel = aula.codnivel  "
				+ "INNER JOIN tipo_grado ON tipo_grado.codtipogrado = aula.codtipogrado  "
				+ "INNER JOIN grado ON grado.codgrado = aula.codgrado  "
				+ "INNER JOIN seccion ON seccion.codseccion = aula.codseccion  "
				+ "INNER JOIN turno ON turno.codturno = aula.codturno  "
				+ "INNER JOIN grupo_horario as gh on gh.cod_gru=hcd.codGru  "
				+ "WHERE hcd.cod_per='" + periodo + "'  "
				+ "GROUP BY aula.codAula,hcd.codGru  "
				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,turno.desturno,seccion.desseccion";

			ResultSet rs = st.executeQuery(query);
			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codAula"));
				aula.setCodigoGrupo(rs.getString("codGru"));
				aula.setMaxGrupo(rs.getInt("max_gru"));
				aula.setCadena(rs.getString("cadena"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));

				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
	}

	@Override
	public ArrayList<Aula> listarDatosHorairo2do(String periodo, String parte) throws Exception {
		String base = "horario";
		ArrayList<Aula> lista = new ArrayList<Aula>();
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();
			if (parte.equals("todo")) {
				String query = "SELECT  \n"
					+ "	  hcd.codAula,  \n"
					+ "	  hcd.codGru,  \n"
					+ "	  gh.max_gru,  \n"
					+ "	  gh.cadena,  \n"
					+ "	  sede.des_loc,  \n"
					+ "	  tipo_centro.destipocentro,  \n"
					+ "	  centro.descentro,  \n"
					+ "	  nivel.desnivel,  \n"
					+ "	  tipo_grado.destipogrado,  \n"
					+ "	  grado.desgrado,  \n"
					+ "	  seccion.desseccion,  \n"
					+ "	  turno.desturno  \n"
					+ "	  FROM  \n"
					+ "	  horario_curso_docente as hcd  \n"
					+ "	  INNER JOIN aula ON aula.codaula = hcd.codAula  \n"
					+ "	  INNER JOIN sede ON sede.cod_loc = aula.codlocal  \n"
					+ "	  INNER JOIN tipo_centro ON tipo_centro.codtipocentro = aula.codtipocentro  \n"
					+ "	  INNER JOIN centro ON centro.codcentro = aula.cocentro  \n"
					+ "	  INNER JOIN nivel ON nivel.codnivel = aula.codnivel  \n"
					+ "	  INNER JOIN tipo_grado ON tipo_grado.codtipogrado = aula.codtipogrado  \n"
					+ "	  INNER JOIN grado ON grado.codgrado = aula.codgrado  \n"
					+ "	  INNER JOIN seccion ON seccion.codseccion = aula.codseccion  \n"
					+ "	  INNER JOIN turno ON turno.codturno = aula.codturno  \n"
					+ "	  INNER JOIN grupo_horario as gh on gh.cod_gru=hcd.codGru  \n"
					+ "	  WHERE hcd.cod_per='" + periodo + "'  and aula.estado='1' and sede.cod_loc in (1,2,3,4,5,6,7,8,9,10,11,12,13,16,17,21,22,23,24,41,44,43,50,15,46)\n"
					+ "	  GROUP BY aula.codAula,hcd.codGru  \n"
					+ "	  ORDER BY hcd.codGru,sede.des_loc,hcd.cod_gru_aul,grado.desgrado,tipo_centro.destipocentro,centro.descentro,nivel.desnivel,tipo_grado.destipogrado,turno.desturno,seccion.desseccion";

				ResultSet rs = st.executeQuery(query);

				while (rs.next()) {
					Aula aula = new Aula();
					aula.setCodigoAula(rs.getInt("codAula"));
					aula.setCodigoGrupo(rs.getString("codGru"));
					aula.setMaxGrupo(rs.getInt("max_gru"));
					aula.setCadena(rs.getString("cadena"));
					aula.setNombreLocal(rs.getString("des_loc"));
					aula.setNombreTipoCentro(rs.getString("destipocentro"));
					aula.setNombreCentro(rs.getString("descentro"));
					aula.setNombreNivel(rs.getString("desnivel"));
					aula.setNombreTipoGrado(rs.getString("destipogrado"));
					aula.setNombreGrado(rs.getString("desgrado"));
					aula.setNombreSeccion(rs.getString("desseccion"));
					aula.setNombreTurno(rs.getString("desturno"));

					lista.add(aula);
				}

			} else if (parte.equals("todo2")) {
				String query = "SELECT  \n"
					+ "	  hcd.codAula,  \n"
					+ "	  hcd.codGru,  \n"
					+ "	  gh.max_gru,  \n"
					+ "	  gh.cadena,  \n"
					+ "	  sede.des_loc,  \n"
					+ "	  tipo_centro.destipocentro,  \n"
					+ "	  centro.descentro,  \n"
					+ "	  nivel.desnivel,  \n"
					+ "	  tipo_grado.destipogrado,  \n"
					+ "	  grado.desgrado,  \n"
					+ "	  seccion.desseccion,  \n"
					+ "	  turno.desturno  \n"
					+ "	  FROM  \n"
					+ "	  horario_curso_docente as hcd  \n"
					+ "	  INNER JOIN aula ON aula.codaula = hcd.codAula  \n"
					+ "	  INNER JOIN sede ON sede.cod_loc = aula.codlocal  \n"
					+ "	  INNER JOIN tipo_centro ON tipo_centro.codtipocentro = aula.codtipocentro  \n"
					+ "	  INNER JOIN centro ON centro.codcentro = aula.cocentro  \n"
					+ "	  INNER JOIN nivel ON nivel.codnivel = aula.codnivel  \n"
					+ "	  INNER JOIN tipo_grado ON tipo_grado.codtipogrado = aula.codtipogrado  \n"
					+ "	  INNER JOIN grado ON grado.codgrado = aula.codgrado  \n"
					+ "	  INNER JOIN seccion ON seccion.codseccion = aula.codseccion  \n"
					+ "	  INNER JOIN turno ON turno.codturno = aula.codturno  \n"
					+ "	  INNER JOIN grupo_horario as gh on gh.cod_gru=hcd.codGru  \n"
					+ "	  WHERE hcd.cod_per='" + periodo + "'  and aula.estado='1' and sede.cod_loc in (49,52,42,45,25,26,27,28,30,31,32,33,48,29,34,35,36,37,38)\n"
					+ "	  GROUP BY aula.codAula,hcd.codGru  \n"
					+ "	  ORDER BY hcd.codGru,sede.des_loc,hcd.cod_gru_aul,grado.desgrado,tipo_centro.destipocentro,centro.descentro,nivel.desnivel,tipo_grado.destipogrado,turno.desturno,seccion.desseccion";

				ResultSet rs = st.executeQuery(query);

				while (rs.next()) {
					Aula aula = new Aula();
					aula.setCodigoAula(rs.getInt("codAula"));
					aula.setCodigoGrupo(rs.getString("codGru"));
					aula.setMaxGrupo(rs.getInt("max_gru"));
					aula.setCadena(rs.getString("cadena"));
					aula.setNombreLocal(rs.getString("des_loc"));
					aula.setNombreTipoCentro(rs.getString("destipocentro"));
					aula.setNombreCentro(rs.getString("descentro"));
					aula.setNombreNivel(rs.getString("desnivel"));
					aula.setNombreTipoGrado(rs.getString("destipogrado"));
					aula.setNombreGrado(rs.getString("desgrado"));
					aula.setNombreSeccion(rs.getString("desseccion"));
					aula.setNombreTurno(rs.getString("desturno"));

					lista.add(aula);
				}

			}

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

	/**
	 *
	 *
	 * @author Cindy Velasquez
	 * @param codigoSede
	 * @param check
	 * @param codigoPeriodoAcademico
	 * @return devuelve una lista de las aulas según la sede y el periodo que
	 * corresponda
	 * @throws Exception
	 */
	@Override
	public ArrayList<Aula> listadoAulas(String codigoSede, String codigoPeriodoAcademico) throws Exception {
		String base = "horario";
		ArrayList<Aula> lista = new ArrayList<Aula>();
		Connection cnx = null;

		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();
			String query = "SELECT\n"
				+ " hcd.cod_hcd,\n"
				+ " aula.codaula,\n"
				+ " sede.des_loc,    \n"
				+ " tipo_centro.destipocentro,   \n"
				+ " centro.descentro,       \n"
				+ " nivel.desnivel,       \n"
				+ " tipo_grado.destipogrado,       \n"
				+ " grado.desgrado,       \n"
				+ " seccion.desseccion,       \n"
				+ " turno.desturno,      \n"
				+ " aula.codtipocentro,        \n"
				+ " aula.cocentro,        \n"
				+ " aula.codnivel,        \n"
				+ " aula.codtipogrado,        \n"
				+ " aula.codgrado,        \n"
				+ " aula.codseccion,        \n"
				+ " aula.codturno      \n"
				+ " FROM       \n"
				+ " aula       \n"
				+ " INNER JOIN sede ON aula.codlocal = sede.cod_loc       \n"
				+ " INNER JOIN tipo_centro ON tipo_centro.codtipocentro = aula.codtipocentro   \n"
				+ " INNER JOIN centro ON centro.codcentro = aula.cocentro       \n"
				+ " INNER JOIN nivel ON nivel.codnivel = aula.codnivel       \n"
				+ " INNER JOIN tipo_grado ON tipo_grado.codtipogrado = aula.codtipogrado  \n"
				+ " INNER JOIN grado ON grado.codgrado = aula.codgrado       \n"
				+ " INNER JOIN seccion ON seccion.codseccion = aula.codseccion       \n"
				+ " INNER JOIN turno ON turno.codturno = aula.codturno   \n"
				+ " INNER JOIN horario_curso_docente hcd ON hcd.codAula = aula.codaula\n"
				+ " where aula.codlocal = '" + codigoSede + "'  AND hcd.cod_per='" + codigoPeriodoAcademico + "' AND hcd.est_hcd = '1'";
			System.out.println("listadoAulas => " + query);
			ResultSet rs = st.executeQuery(query);
			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoHorarioCursoDocente(rs.getString("cod_hcd"));
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setNombreTurno(rs.getString("desturno"));
				lista.add(aula);
			}

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

	@Override
	public int actualizarNombreAula(String codAula, String nomAula) throws Exception {
		int dato = 0;
		Connection cnx = null;
		String base = "horario";
		Statement pst = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			pst = cnx.createStatement();
			String query = "update aula set nombre='" + nomAula + "' where codAula='" + codAula + "'";
			dato = pst.executeUpdate(query);

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

		return dato;
	}

	@Override
	public int actualizarNombreGrado(String codAula, String nomGrado) throws Exception {
		int dato = 0;
		Connection cnx = null;
		String base = "horario";
		Statement pst = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			pst = cnx.createStatement();
			String query = "update aula set codgrado='" + nomGrado + "' where codAula='" + codAula + "'";
			
			dato = pst.executeUpdate(query);

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

		return dato;
	}

	@Override
	public int actualizarNombreSeccion(String codAula, String nomSeccion) throws Exception {
		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
	}

    @Override
    public ArrayList<Aula> listarAulasBloqueTotal(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno, int inicio, int cantidad, int periodo) throws Exception {
       ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT IFNULL(periodo_academico.nom_per,'SIN NOMBRE') nom_per,aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,  "
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,  "
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula   "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal   "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro   "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro   "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel   "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado   "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado   "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion   "
				+ "INNER JOIN turno on turno.codturno=aula.codturno  "
                                + "left JOIN periodo_academico on aula.periodo=periodo_academico.cod_per"
                                + "  WHERE ";
			if (!codSede.equals("") && codTipoCentro.equals("")) {
				if (codSede.equals("todo") || codSede.equals("todo2")) {
					query += " ";
				} else {
					query += " aula.codlocal='" + codSede + "' and ";
				}
			} else if (!codTipoCentro.equals("") && codCentro.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and ";
			} else if (!codCentro.equals("") && codNivel.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and ";
			} else if (!codNivel.equals("") && codTipoGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and  ";
			} else if (!codTipoGrado.equals("") && codGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and  ";
			} else if (!codGrado.equals("") && codSeccion.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and  ";
			} else if (!codSeccion.equals("") && codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and  ";
			} else if (!codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and aula.codturno='" + codTurno + "' and  ";
			}

			query += " aula.estado='1' and aula.anno and nivel.codnivel not in (1,2) "
				+ " ORDER BY -periodo_academico.nom_per DESC ,sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,turno.desturno,seccion.desseccion LIMIT " + inicio + "," + cantidad + " ";
			System.out.println(query);

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				aula.setCodigoLocal(rs.getString("codlocal"));
				aula.setNombreLocal(rs.getString("des_loc"));
				aula.setCodigoTipoCentro(rs.getString("codtipocentro"));
				aula.setNombreTipoCentro(rs.getString("destipocentro"));
				aula.setCodigoCentro(rs.getString("cocentro"));
				aula.setNombreCentro(rs.getString("descentro"));
				aula.setCodigoNivel(rs.getString("codnivel"));
				aula.setNombreNivel(rs.getString("desnivel"));
				aula.setCodigoTipoGrado(rs.getString("codtipogrado"));
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				aula.setCodigoGrado(rs.getString("codgrado"));
				aula.setNombreGrado(rs.getString("desgrado"));
				aula.setCodigoSeccion(rs.getString("codseccion"));
				aula.setNombreSeccion(rs.getString("desseccion"));
				aula.setCodigoTurno(rs.getString("codturno"));
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setNombre(rs.getString("nombre"));
				aula.setEstadoAula(rs.getInt("estado"));
                                aula.setNombrePeriodo(rs.getString("nom_per"));
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
    }

    @Override
    public int cantlistarAulasBloqueTotal(String codSede, String codTipoCentro, String codCentro, String codNivel, String codTipoGrado, String codGrado, String codSeccion, String codTurno, int codperiodo) throws Exception {
        int dato = 0;
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT count(*) as cant FROM aula   "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal   "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro   "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro   "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel   "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado   "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado   "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion   "
				+ "INNER JOIN turno on turno.codturno=aula.codturno  WHERE ";
			if (!codSede.equals("") && codTipoCentro.equals("")) {
				if (codSede.equals("todo")) {
					query += " ";
				} else {
					query += " aula.codlocal='" + codSede + "' and ";
				}
			} else if (!codTipoCentro.equals("") && codCentro.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and ";
			} else if (!codCentro.equals("") && codNivel.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and ";
			} else if (!codNivel.equals("") && codTipoGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and  ";
			} else if (!codTipoGrado.equals("") && codGrado.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and  ";
			} else if (!codGrado.equals("") && codSeccion.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and  ";
			} else if (!codSeccion.equals("") && codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and  ";
			} else if (!codTurno.equals("")) {
				query += " aula.codlocal='" + codSede + "' and aula.codtipocentro='" + codTipoCentro + "' and aula.cocentro='" + codCentro + "' and aula.codnivel='" + codNivel + "' and aula.codtipogrado='" + codTipoGrado + "' and aula.codgrado='" + codGrado + "' and aula.codseccion='" + codSeccion + "' and aula.codturno='" + codTurno + "' and  ";
			}

			query += " aula.estado='1' and aula.anno and nivel.codnivel not in (1,2) "
				+ " ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   "
				+ " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,turno.desturno,seccion.desseccion";
			System.out.println(query);

			ResultSet rs = st.executeQuery(query);

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

    @Override
    public int obtenerCodigoSede(String codigoAula) throws Exception {
        int aula = 0;
		String base = "horario";
		String aux_nombre_aula="";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();

			String query = "SELECT aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,"
				+ "aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,"
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula "
				+ "INNER JOIN sede on sede.cod_loc=aula.codlocal "
				+ "INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro "
				+ "INNER JOIN centro on centro.codcentro=aula.cocentro "
				+ "INNER JOIN nivel on nivel.codnivel=aula.codnivel "
				+ "INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado "
				+ "INNER JOIN grado on grado.codgrado=aula.codgrado "
				+ "INNER JOIN seccion on seccion.codseccion=aula.codseccion "
				+ "INNER JOIN turno on turno.codturno=aula.codturno "
				+ "WHERE aula.codaula='" + codigoAula + "'  and aula.anno "
				+ "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro, "
				+ "nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno";

			ResultSet rs = st.executeQuery(query);
//			aux_nombre_aula=rs.getString("des_loc");
			while (rs.next()) {
				aula = rs.getInt("des_loc");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return aula;
    }

    @Override
    public ArrayList<Aula> listarAulaPorSede(int codSede,int periodo) throws Exception {
        ArrayList<Aula> lista = new ArrayList<Aula>();
		String base = "horario";
		Connection cnx = null;
		try {
			cnx = MySqlDAOFactory.obtenerConexion(base);
			Statement st = cnx.createStatement();
                        
                        String query = "SELECT t.desnivel,t.codaula,t.nombre,t.destipogrado,t.desgrado,t.desseccion,t.desturno,t.des_loc\n" +
                                    "FROM (\n" +
                                    "\n" +
                                    "SELECT aula.codaula,  \n" +
                                    " sede.des_loc,  \n" +
                                    " nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.nombre \n" +
                                    " ,(SELECT count(*) as cant FROM horario_curso_docente WHERE codaula=aula.codaula and cod_per="+periodo+") as horarios\n" +
                                    "FROM aula   \n" +
                                    " INNER JOIN sede on sede.cod_loc=aula.codlocal   \n" +
                                    " INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro   \n" +
                                    " INNER JOIN centro on centro.codcentro=aula.cocentro   \n" +
                                    " INNER JOIN nivel on nivel.codnivel=aula.codnivel   \n" +
                                    " INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado   \n" +
                                    " INNER JOIN grado on grado.codgrado=aula.codgrado   \n" +
                                    " INNER JOIN seccion on seccion.codseccion=aula.codseccion   \n" +
                                    " INNER JOIN turno on turno.codturno=aula.codturno\n" +
                                    " \n" +
                                    "WHERE \n" +
                                    "   aula.codlocal = "+codSede+" and \n" +
                                    "aula.estado='1' and \n" +
                                    "aula.anno and nivel.codnivel not in (1,2) \n" +
                                    "ORDER BY sede.des_loc,tipo_centro.destipocentro,centro.descentro,   \n" +
                                    "				 nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,turno.desturno,seccion.desseccion\n" +
                                    "\n" +
                                    ") AS t\n" +
                                    "where t.horarios = 0";

                        // query sin el filtro de aulas sin horario
//			String query = "SELECT IFNULL(periodo_academico.nom_per,'SIN NOMBRE') nom_per,aula.codaula,aula.codlocal,aula.codtipocentro,aula.cocentro,aula.codnivel,aula.codtipogrado,   \n" +
//"				 aula.codgrado,aula.codseccion,aula.codturno,sede.des_loc,tipo_centro.destipocentro,centro.descentro,   \n" +
//"				 nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,seccion.desseccion,turno.desturno,aula.estado,aula.nombre FROM aula    \n" +
//"				 INNER JOIN sede on sede.cod_loc=aula.codlocal    \n" +
//"				 INNER JOIN tipo_centro on tipo_centro.codtipocentro=aula.codtipocentro    \n" +
//"				 INNER JOIN centro on centro.codcentro=aula.cocentro    \n" +
//"				 INNER JOIN nivel on nivel.codnivel=aula.codnivel    \n" +
//"				 INNER JOIN tipo_grado on tipo_grado.codtipogrado=aula.codtipogrado    \n" +
//"				 INNER JOIN grado on grado.codgrado=aula.codgrado    \n" +
//"				 INNER JOIN seccion on seccion.codseccion=aula.codseccion    \n" +
//"				 INNER JOIN turno on turno.codturno=aula.codturno   \n" +
//"                                left JOIN periodo_academico on aula.periodo=periodo_academico.cod_per\n" +
//"                                WHERE  aula.codlocal="+codSede+" and aula.estado='1' and aula.anno and nivel.codnivel not in (1,2)   \n" +
//"				  ORDER BY -periodo_academico.nom_per DESC ,sede.des_loc,tipo_centro.destipocentro,centro.descentro,     \n" +
//"				  nivel.desnivel,tipo_grado.destipogrado,grado.desgrado,turno.desturno,seccion.desseccion ";
			
			System.out.println(query);

			ResultSet rs = st.executeQuery(query);

			while (rs.next()) {
				Aula aula = new Aula();
				aula.setCodigoAula(rs.getInt("codaula"));
				
				aula.setNombreLocal(rs.getString("des_loc"));
				
				
				
				
				
				aula.setNombreNivel(rs.getString("desnivel"));
				
				aula.setNombreTipoGrado(rs.getString("destipogrado"));
				
				aula.setNombreGrado(rs.getString("desgrado"));
			
				aula.setNombreSeccion(rs.getString("desseccion"));
				
				aula.setNombreTurno(rs.getString("desturno"));
				aula.setNombre(rs.getString("nombre"));
				
                              
				lista.add(aula);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			cnx.close();
		}
		return lista;
    }

}
