/// <summary>
        /// crea una ofertaAcademica nuevo
        /// </summary>
        /// <param name="dato"></param>
        /// Se crea un dato de tipo OfertaAcademica
        public void nuevo(OfertaAcademica dato)
        {
            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                //Agregamos la instruccion con el stored procedure
                MySqlCommand comando = new MySqlCommand("sp_oferta_academica_INSERT");
                comando.CommandType = CommandType.StoredProcedure;
                 
                //comando.Parameters.AddWithValue("idOfertaAcademica", dato.idOfertaAcademica);
                comando.Parameters.AddWithValue("p_periodo", dato.periodo.idPeriodo);
                comando.Parameters.AddWithValue("p_curso", dato.curso.idCurso);
                
                if (dato.profesor.idProfesor == 0)
                {
                    comando.Parameters.AddWithValue("p_profesor", null);
                }
                else
                {
                    comando.Parameters.AddWithValue("p_profesor", dato.profesor.idProfesor);
                }

                comando.Parameters.AddWithValue("p_cupo", dato.cupo);
                comando.Parameters.AddWithValue("p_grupo", dato.grupo);
                if (dato.aula.idAula == 0)
                {
                    comando.Parameters.AddWithValue("p_aula", null);
                }
                else
                {
                    comando.Parameters.AddWithValue("p_aula", dato.aula.idAula);
                }
                comando.Parameters.AddWithValue("p_horaEntrada", dato.horaEntrada);
                comando.Parameters.AddWithValue("p_horaSalida", dato.horaSalida);
                comando.Parameters.AddWithValue("p_dia1", dato.dia1);
                comando.Parameters.AddWithValue("p_dia2", dato.dia2);
                comando.Parameters.AddWithValue("p_dia3", dato.dia3);
                comando.Parameters.AddWithValue("p_modalidad", dato.modalidad.idCursoModalidad);
                comando.Parameters.AddWithValue("p_matriculados", dato.matriculados);
                if (dato.carrera.idCarrera == 0)
                {
                    comando.Parameters.AddWithValue("p_carrera", null);
                }
                else
                {
                    comando.Parameters.AddWithValue("p_carrera", dato.carrera.idCarrera);
                }
                comando.Parameters.AddWithValue("p_estado", dato.estado);
                //comando.Parameters.AddWithValue("p_fechaCreacion", DateTime.Today);
                //comando.Parameters.AddWithValue("p_fechaModificacion", DateTime.Today);
                comando.Parameters.AddWithValue("p_usuarioCreacion", dato.usuarioCreacion);
                //comando.Parameters.AddWithValue("p_usuarioModificacion", pUsuario);
                
                db.executeNonQuery(comando);
            }
        }
  /// <summary>
 /// elimina una ofertaAcademica
 /// </summary>
 /// <param name="dato"></param>
 public void eliminar(OfertaAcademica dato)
 {
     if (this.existe(dato))
     {
         this.ofertaAcademicaDao.eliminar(dato);
     }
     else
     {
         throw new Exception("No existe el registro.");
     }
 }
        /// <summary>
        /// crea una ofertaAcademica nuevo
        /// </summary>
        /// <param name="dato"></param>
        public void nuevo(OfertaAcademica dato)
        {

            if (!this.existe(dato))
            {
                this.ofertaAcademicaDao.nuevo(dato);
            }
            else
            {
                throw new Exception("Ya existe el registro.");
            }
        }
        protected void btnInsertar_Click(object sender, EventArgs e)
        {

            try
            {
                if (this.validarDatosInsertar())
                {
                    OfertaAcademica ofertaAcademica = new OfertaAcademica();
                    //llena el objeto con los valores 
                    ofertaAcademica.periodo.idPeriodo = periodo.Value.ToString();
                    ofertaAcademica.curso.idCurso = curso.Value.ToString();
                    if (this.aula.SelectedItem != null)
                        ofertaAcademica.aula.idAula =  Int32.Parse(aula.Value.ToString());
                    if (this.carrera.SelectedItem != null)
                        ofertaAcademica.carrera.idCarrera = Int32.Parse(carrera.Value.ToString());
                    if (this.profesor.SelectedItem != null)
                        ofertaAcademica.profesor.idProfesor = Int32.Parse(profesor.Value.ToString());
                    if (this.modalidad.SelectedItem != null)
                        ofertaAcademica.modalidad.idCursoModalidad = Int32.Parse(modalidad.Value.ToString());
                    if (this.horaEntrada.SelectedItem != null)
                        ofertaAcademica.horaEntrada = horaEntrada.Value.ToString ();
                    if (this.horaSalida.SelectedItem != null)
                        ofertaAcademica.horaSalida = horaSalida.Value.ToString();

                    if (this.dia1.SelectedItem != null)
                        ofertaAcademica.dia1 = dia1.Value.ToString();
                    if (this.dia2.SelectedItem != null)
                        ofertaAcademica.dia2 = dia2.Value.ToString();
                    if (this.grupo.SelectedItem != null)
                        ofertaAcademica.grupo = grupo.Value.ToString();
                    if (this.estado.SelectedItem != null)
                        ofertaAcademica.estado = estado.Value.ToString();

                    ofertaAcademica.cupo = Int32.Parse(cupo.Text.ToString()); 
                    ofertaAcademica.usuarioCreacion = Session["usuario"].ToString();

                    ofertaAcademicaBo.nuevo(ofertaAcademica);//agrega el objeto a la base de datos  

                    this.cargarDatos();//refescar los datos
                    this.lblMensaje.Text = "Datos agredados.";
                    this.lblMensaje.CssClass = "successMessage";
                }
                this.cargarDatos();
            }
            catch (Exception ex)
            {
                this.lblMensaje.Text = Utilidades.validarExepcionSQL(ex.Message );
                this.lblMensaje.CssClass = "errorMessage"; 
            }
        }
        /// <summary>
        /// actualiza un registro
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
        {
            try
            {
                OfertaAcademica ofertaAcademica = new OfertaAcademica();
                //llena el objeto con los valores

                if (e.NewValues["periodo"] != null)
                    ofertaAcademica.periodo.idPeriodo = e.NewValues["periodo"].ToString();
                if (e.NewValues["curso"] != null)
                    ofertaAcademica.curso.idCurso = e.NewValues["curso"].ToString();
                if (e.NewValues["aula"] != null)
                    ofertaAcademica.aula.idAula =  Int32.Parse(e.NewValues["aula"].ToString());
                if (e.NewValues["carrera"] != null)
                    ofertaAcademica.carrera.idCarrera =  Int32.Parse(e.NewValues["carrera"].ToString());
                if (e.NewValues["profesor"] != null)
                    ofertaAcademica.profesor.idProfesor = Int32.Parse(e.NewValues["profesor"].ToString());
                if (e.NewValues["modalidad"] != null)
                    ofertaAcademica.modalidad.idCursoModalidad = Int32.Parse(e.NewValues["modalidad"].ToString());
                if (e.NewValues["dia1"] != null)
                    ofertaAcademica.dia1 = e.NewValues["dia1"].ToString();
                if (e.NewValues["dia2"] != null)
                    ofertaAcademica.dia2 =  e.NewValues["dia2"].ToString();
                if (e.NewValues["dia3"] != null)
                    ofertaAcademica.dia3 = e.NewValues["dia3"].ToString();
                if (e.NewValues["horaEntrada"] != null)
                    ofertaAcademica.horaEntrada = e.NewValues["horaEntrada"].ToString();
                if (e.NewValues["horaSalida"] != null)
                    ofertaAcademica.horaSalida = e.NewValues["horaSalida"].ToString();
                if (e.NewValues["grupo"] != null)
                    ofertaAcademica.grupo = e.NewValues["grupo"].ToString();
                if (e.NewValues["estado"] != null)
                    ofertaAcademica.estado = e.NewValues["estado"].ToString();

                ofertaAcademica.cupo = Int32.Parse(e.NewValues["cupo"].ToString());
                ofertaAcademica.matriculados = Int32.Parse(e.NewValues["matriculados"].ToString());
                ofertaAcademica.idOfertaAcademica = Int32.Parse(e.NewValues["idOfertaAcademica"].ToString());
               
                ofertaAcademica.usuarioModificacion = Session["usuario"].ToString();
                ofertaAcademicaBo.modificar(ofertaAcademica);//agrega el objeto a la base de datos 

                e.Cancel = true;//manejo de execpcion no controlada BUSCAR SOLUCION
                this.ASPxGridView1.CancelEdit();

                this.cargarDatos();//refescar los datos
            }
            catch (Exception ex)
            {
                Session["errorMessage"] = ex.Message;
            }
        }
 /// <summary>
 /// verifica si existe una  ofertaAcademica
 /// </summary>
 /// <param name="dato"></param>
 /// <returns>TRUE si existe FALSE en caso contrario</returns>
 public bool existe(OfertaAcademica dato)
 {
     OfertaAcademica objeto = new OfertaAcademica();
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_oferta_academica_SELECT_ByID");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idOfertaAcademica", dato.idOfertaAcademica);
         DataSet ds = db.executeReader(comando, "oferta_academica");
         if (ds.Tables[0].Rows.Count > 0)
         {
             return true;
         }
         else
         {
             return false;
         }
     } 
 }
        /// <summary>
        /// consulta todaslso grupos por carrera
        /// </summary>
        /// <returns>List</returns>
        public List<OfertaAcademica> consultaGrupoPeriodoCarrera(String periodo, Int32 carrera)
        {

            List<OfertaAcademica> lista = new List<OfertaAcademica>();
            Database db = DatabaseFactory.openDatabase("matricula_web_db");
            MySqlCommand comando = new MySqlCommand("sp_oferta_academica_SELECT_byPeriodoCarrera");
            comando.CommandType = CommandType.StoredProcedure;
            comando.Parameters.AddWithValue("p_periodo", periodo);
            comando.Parameters.AddWithValue("p_carrera", carrera);  
            //indicamos el nombre de la tabla
            DataSet ds = db.executeReader(comando, "oferta_academica");

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                OfertaAcademica dato = new OfertaAcademica();
                if (!row["grupo"].ToString().Equals("")) { 
                    dato.grupo = row["grupo"].ToString();
                }
                if (!row["matriculados"].ToString().Equals(""))
                {
                    dato.matriculados = Int32.Parse(row["matriculados"].ToString());
                }
                if (!row["cupo"].ToString().Equals(""))
                {
                    dato.cupo = Int32.Parse(row["cupo"].ToString());
                }
                lista.Add(dato);
            }
            return lista;
        }
        /// <summary>
        /// consulta todas las ofertas
        /// </summary>
        /// <returns>List</returns>
        public OfertaAcademica consultarOfertaXPeriodoEstudiante(String idPeriodo, Int32 idEstudiante)
        {
            OfertaAcademica dato = new OfertaAcademica();
            Database db = DatabaseFactory.openDatabase("matricula_web_db");
            MySqlCommand comando = new MySqlCommand("sp_oferta_academica_SELECT_ByPeriodoEstudiante");
            comando.CommandType = CommandType.StoredProcedure;
            //comando.Parameters.AddWithValue("p_idCarrera", idCarrera);

            comando.Parameters.AddWithValue("p_periodo", idPeriodo);
            comando.Parameters.AddWithValue("p_estudiante", idEstudiante);
            //indicamos el nombre de la tabla

            DataSet ds = db.executeReader(comando, "oferta_academica");
            foreach (DataRow row in ds.Tables[0].Rows)
            {

                if (!row["idOfertaAcademica"].ToString().Equals(""))
                    dato.idOfertaAcademica = Int32.Parse(row["idOfertaAcademica"].ToString());
                if (!row["grupo"].ToString().Equals(""))
                    dato.grupo = row["grupo"].ToString();
                if (!row["carrera"].ToString().Equals(""))
                    dato.carrera.idCarrera = Int32.Parse(row["carrera"].ToString());
            }


            return dato;
        }
                /// <summary>
        /// consulta todas las aulas
        /// </summary>
        /// <returns>List</returns>
        public List<OfertaAcademica> consultarTodos()
        {
            List<OfertaAcademica> lista = new List<OfertaAcademica>();
            Database db = DatabaseFactory.openDatabase("matricula_web_db");
            MySqlCommand comando = new MySqlCommand("sp_oferta_academica_SELECT_all");
            comando.CommandType = CommandType.Text;
            //indicamos el nombre de la tabla
            DataSet ds = db.executeReader(comando, "oferta_academica");
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                OfertaAcademica dato = new OfertaAcademica();
                if (!row["modalidad"].ToString().Equals("")) 
                    dato.modalidad.idCursoModalidad = Int32.Parse(row["modalidad"].ToString());
                if (!row["periodo"].ToString().Equals("")) 
                    dato.periodo.idPeriodo = row["periodo"].ToString();
                if (!row["curso"].ToString().Equals("")) 
                    dato.curso.idCurso = row["curso"].ToString();
                if (!row["profesor"].ToString().Equals(""))
                    dato.profesor.idProfesor = Int32.Parse(row["profesor"].ToString());
                if (!row["aula"].ToString().Equals(""))
                    dato.aula.idAula = Int32.Parse(row["aula"].ToString());
                if (!row["horaEntrada"].ToString().Equals(""))
                    dato.horaEntrada = row["horaEntrada"].ToString();
                if (!row["horaSalida"].ToString().Equals(""))
                    dato.horaSalida = row["horaSalida"].ToString();
                if (!row["carrera"].ToString().Equals(""))
                    dato.carrera.idCarrera = Int32.Parse(row["carrera"].ToString());
                if (!row["dia1"].ToString().Equals(""))
                    dato.dia1 = row["dia1"].ToString();
                if (!row["dia2"].ToString().Equals(""))
                    dato.dia2 = row["dia2"].ToString();
                if (!row["dia3"].ToString().Equals(""))
                    dato.dia3 = row["dia3"].ToString();
                if (!row["grupo"].ToString().Equals(""))
                    dato.grupo = row["grupo"].ToString();

                if (!row["cupo"].ToString().Equals("")) 
                    dato.cupo = Int32.Parse(row["cupo"].ToString());
                if (!row["matriculados"].ToString().Equals("")) 
                    dato.matriculados = Int32.Parse(row["matriculados"].ToString());
                if (!row["idOfertaAcademica"].ToString().Equals("")) 
                    dato.idOfertaAcademica = Int32.Parse(row["idOfertaAcademica"].ToString());

                if (!row["estado"].ToString().Equals("")) 
                    dato.estado = row["estado"].ToString();
                //Se deben de indicar los valores del usuario
                if (!row["usuarioCreacion"].ToString().Equals("")) 
                    dato.usuarioCreacion = row["usuarioCreacion"].ToString();
                if (!row["usuarioModificacion"].ToString().Equals("")) 
                    dato.usuarioModificacion = row["usuarioModificacion"].ToString();
                //Se deben de indicar los valores de la fecha
                if (!row["fechaCreacion"].ToString().Equals(""))
                    dato.fechaCreacion = DateTime.Parse(row["fechaCreacion"].ToString());
                if (!row["fechaModificacion"].ToString().Equals(""))
                    dato.fechaModificacion = DateTime.Parse(row["fechaModificacion"].ToString());
                lista.Add(dato);
            }
            return lista;
        }
        /// <summary>
        /// consulta una OfertaAcademica
        /// </summary>
        /// <param name="dato"></param>
        /// <returns></returns>
        public OfertaAcademica consultarId(OfertaAcademica dato)
        {

            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                MySqlCommand comando = new MySqlCommand("sp_oferta_academica_SELECT_ByID");
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("p_idOfertaAcademica", dato.idOfertaAcademica);
                //Despues del comando indicar el nombre de la tabla
                DataSet ds = db.executeReader(comando, "oferta_academica");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    DataRow row = ds.Tables[0].Rows[0];

                    if (!row["modalidad"].ToString().Equals("")) 
                        dato.modalidad.idCursoModalidad = Int32.Parse(row["modalidad"].ToString());
                    if (!row["periodo"].ToString().Equals("")) 
                        dato.periodo.idPeriodo = row["periodo"].ToString();
                    if (!row["curso"].ToString().Equals("")) 
                        dato.curso.idCurso = row["curso"].ToString();

                    if (!row["grupo"].ToString().Equals(""))
                        dato.grupo = row["grupo"].ToString();
                    if (!row["profesor"].ToString().Equals(""))
                        dato.profesor.idProfesor = Int32.Parse(row["profesor"].ToString());
                    if (!row["aula"].ToString().Equals(""))
                        dato.aula.idAula = Int32.Parse(row["aula"].ToString());
                    if (!row["horaEntrada"].ToString().Equals(""))
                        dato.horaEntrada = row["horaEntrada"].ToString();
                    if (!row["horaSalida"].ToString().Equals(""))
                        dato.horaSalida = row["horaSalida"].ToString();
                    if (!row["carrera"].ToString().Equals(""))
                        dato.carrera.idCarrera = Int32.Parse(row["carrera"].ToString());
                    if (!row["dia1"].ToString().Equals(""))
                        dato.dia1 = row["dia1"].ToString();
                    if (!row["dia2"].ToString().Equals(""))
                        dato.dia2 = row["dia2"].ToString();
                    if (!row["dia3"].ToString().Equals(""))
                        dato.dia3 = row["dia3"].ToString();

                    if (!row["cupo"].ToString().Equals("")) 
                        dato.cupo = Int32.Parse(row["cupo"].ToString());
                    if (!row["matriculados"].ToString().Equals("")) 
                        dato.matriculados = Int32.Parse(row["matriculados"].ToString());
                    if (!row["idOfertaAcademica"].ToString().Equals("")) 
                        dato.idOfertaAcademica = Int32.Parse(row["idOfertaAcademica"].ToString());

                    if (!row["estado"].ToString().Equals("")) 
                        dato.estado = row["estado"].ToString(); 
                    //Para indicar los datos del usuario
                    if (!row["usuarioCreacion"].ToString().Equals("")) 
                        dato.usuarioCreacion = row["usuarioCreacion"].ToString();
                    if (!row["usuarioModificacion"].ToString().Equals("")) 
                        dato.usuarioModificacion = row["usuarioModificacion"].ToString();
                    //Indicamos los valores de las fechas
                    if (!row["fechaCreacion"].ToString().Equals(""))
                        dato.fechaCreacion = DateTime.Parse(row["fechaCreacion"].ToString());
                    if (!row["fechaModificacion"].ToString().Equals(""))
                        dato.fechaModificacion = DateTime.Parse(row["fechaModificacion"].ToString());
                }
                else
                {
                    dato = null;
                }
                return dato;
            }
        }
 /// <summary>
 /// elimina una ofertaAcademica
 /// </summary>
 /// <param name="dato"></param>
 public void eliminar(OfertaAcademica dato)
 {
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_oferta_academica_DELETE");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idOfertaAcademica", dato.idOfertaAcademica);
         db.executeNonQuery(comando);
     }
 }
 /// <summary>
 /// verifica si existe una ofertaAcademica
 /// </summary>
 /// <param name="dato"></param>
 /// <returns>TRUE si existe FALSE en caso contrario</returns>
 public bool existe(OfertaAcademica dato)
 {
     return this.ofertaAcademicaDao.existe(dato);
 }
 /// <summary>
 /// consulta una OfertaAcademica
 /// </summary>
 /// <param name="dato"></param>
 /// <returns></returns>
 public OfertaAcademica consultarId(OfertaAcademica dato)
 {
     dato = this.ofertaAcademicaDao.consultarId(dato);
     if (dato != null)
     {
         dato.curso = this.cursoBo.consultarId(new Curso(dato.curso.idCurso));
         dato.periodo = this.periodoBo.consultarId(new Periodo(dato.periodo.idPeriodo));
         dato.profesor = this.profesorBo.consultarId(new Profesor(dato.profesor.idProfesor));
         dato.aula = this.nacionalidadBo.consultarId(new Aula(dato.aula.idAula));
         dato.modalidad = this.cursoModalidadBo.consultarId(new CursoModalidad(dato.modalidad.idCursoModalidad));
         dato.carrera = this.carreraBo.consultarId(new Carrera(dato.carrera.idCarrera));
     }
     return dato;
 }
        public List<OfertaAcademica> consultaDiasClases(string pPeriodo, string pCurso, int pProfesor, string pDia1)
        {
            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                List<OfertaAcademica> lista = new List<OfertaAcademica>();
                MySqlCommand comando = new MySqlCommand("sp_reporte_registro_asistencia_parametro");
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("p_periodo", pPeriodo);
                comando.Parameters.AddWithValue("p_curso", pCurso);
                comando.Parameters.AddWithValue("p_profesor", pProfesor);
                comando.Parameters.AddWithValue("p_dia1", pDia1);
                //Despues del comando indicar el nombre de la tabla
                DataSet ds = db.executeReader(comando, "oferta_academica");

                if (ds.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow row in ds.Tables[0].Rows)
                    {
                        OfertaAcademica dato = new OfertaAcademica();
                        if (row["idProfesor"] != null)
                        {
                            if (!row["idProfesor"].ToString().Equals(""))
                                dato.profesor.idProfesor = int.Parse(row["idProfesor"].ToString());
                        }

                        if (row["idOfertaAcademica"] != null)
                        {
                            if (!row["idOfertaAcademica"].ToString().Equals(""))
                                dato.idOfertaAcademica = int.Parse(row["idOfertaAcademica"].ToString());
                        }

                        if (row["dia1"] != null)
                        {
                            if (!row["dia1"].ToString().Equals(""))
                                dato.dia1 = row["dia1"].ToString();
                        }

                        if (row["grupo"] != null)
                        {
                            if (!row["grupo"].ToString().Equals(""))
                                dato.grupo = row["grupo"].ToString();
                        }

                        if (row["horaEntrada"] != null)
                        {
                            if (!row["horaEntrada"].ToString().Equals(""))
                                dato.horaEntrada = row["horaEntrada"].ToString();
                        }


                        if (row["horaSalida"] != null)
                        {
                            if (!row["horaSalida"].ToString().Equals(""))
                                dato.horaSalida = row["horaSalida"].ToString();
                        }
                        lista.Add(dato);
                    }
                }
                return lista;
            }
        }