/// <summary>
        /// crea un curso nuevo
        /// </summary>
        /// <param name="dato"></param>
        /// Se crea un dato de tipo Curso
        public void nuevo(Curso dato)
        {
            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                //Agregamos la instruccion con el stored procedure
                MySqlCommand comando = new MySqlCommand("sp_curso_INSERT");
                comando.CommandType = CommandType.StoredProcedure;

                comando.Parameters.AddWithValue("p_idCurso", dato.idCurso);
                comando.Parameters.AddWithValue("p_nombre", dato.nombre);
                comando.Parameters.AddWithValue("p_grado", dato.grado);
                comando.Parameters.AddWithValue("p_tipo", dato.tipo);
                comando.Parameters.AddWithValue("p_costo", dato.costo);
                comando.Parameters.AddWithValue("p_costoConvalidacion", dato.costoConvalidacion);
                comando.Parameters.AddWithValue("p_costoSuficiencia", dato.costoSuficiencia);
                comando.Parameters.AddWithValue("p_costoTutoria", dato.costoTutoria);
                comando.Parameters.AddWithValue("p_comentario", dato.comentario);
                comando.Parameters.AddWithValue("p_aplicaConvenio", dato.aplicaConvenio);
                //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);
                comando.Parameters.AddWithValue("p_estado", dato.estado);
                db.executeNonQuery(comando);
            }
        }
  /// <summary>
 /// elimina un curso
 /// </summary>
 /// <param name="dato"></param>
 public void eliminar(Curso dato)
 {
     if (this.existe(dato))
     {
         this.cursoDao.eliminar(dato);
     }
     else
     {
         throw new Exception("No existe el registro.");
     }
 }
 /// <summary>
 /// crea una curso nuevo
 /// </summary>
 /// <param name="dato"></param>
 public void nuevo(Curso dato)
 {
     if (!this.existe(dato))
     {
         this.cursoDao.nuevo(dato);
     }
     else
     {
         throw new Exception("Ya existe el registro.");
     }
 }
        /// <summary>
        /// modifica un curso
        /// </summary>
        /// <param name="dato"></param>        
        public void modificar(Curso dato)
        {
            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                MySqlCommand comando = new MySqlCommand("sp_curso_UPDATE");
                comando.CommandType = CommandType.StoredProcedure;

                comando.Parameters.AddWithValue("p_idCurso", dato.idCurso);
                comando.Parameters.AddWithValue("p_nombre", dato.nombre);
                comando.Parameters.AddWithValue("p_grado", dato.grado);
                comando.Parameters.AddWithValue("p_tipo", dato.tipo);
                comando.Parameters.AddWithValue("p_costo", dato.costo);
                comando.Parameters.AddWithValue("p_costoConvalidacion", dato.costoConvalidacion);
                comando.Parameters.AddWithValue("p_costoSuficiencia", dato.costoSuficiencia);
                comando.Parameters.AddWithValue("p_costoTutoria", dato.costoTutoria);
                comando.Parameters.AddWithValue("p_comentario", dato.comentario);
                comando.Parameters.AddWithValue("p_aplicaConvenio", dato.aplicaConvenio);
                //comando.Parameters.AddWithValue("fechaCreacion", DateTime.Today);
                //comando.Parameters.AddWithValue("fechaModificacion", DateTime.Today);
                //comando.Parameters.AddWithValue("usuarioCreacion",pUsuario);
                comando.Parameters.AddWithValue("p_usuarioModificacion", dato.usuarioModificacion);
                comando.Parameters.AddWithValue("p_estado", dato.estado);
                db.executeNonQuery(comando);

                /*
                //comando.Parameters.AddWithValue("p_idRol", pidRol);
                comando.Parameters.AddWithValue("p_nombre", dato.nombre);
                comando.Parameters.AddWithValue("p_grado", dato.grado);
                comando.Parameters.AddWithValue("p_tipo", dato.tipo);
                comando.Parameters.AddWithValue("p_costo", dato.costo);
                comando.Parameters.AddWithValue("p_costoConvalidacion", dato.costoConvalidacion);
                comando.Parameters.AddWithValue("p_costoSuficiencia", dato.costoSuficiencia);
                comando.Parameters.AddWithValue("p_costoTutoria", dato.costoTutoria);
                comando.Parameters.AddWithValue("p_comentario", dato.comentario);
                comando.Parameters.AddWithValue("p_aplicaConvenio", dato.aplicaConvenio);
                //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);
                comando.Parameters.AddWithValue("p_estado", dato.estado);
                db.executeNonQuery(comando);
                 */
            }
        }
        /// <summary>
        /// consulta todos los cursos según un periodo determinado
        /// </summary>
        /// <returns>List</returns>
        public List<Curso> consultarTodosCursos(string pPeriodo, string pCurso, string pProfesor, string pDia1)
        {
            List<Curso> lista = new List<Curso>();
            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                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_dia1", pDia1);
                if (pProfesor != null)
                {
                    comando.Parameters.AddWithValue("p_profesor", int.Parse(pProfesor));
                }
                else {
                    comando.Parameters.AddWithValue("p_profesor", pProfesor);
                }
                
                //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)
                    {
                        Curso dato = new Curso();
                        if (!row["idCurso"].ToString().Equals("")) 
                            dato.idCurso = row["idCurso"].ToString();
                        if (!row["curso"].ToString().Equals("")) 
                            dato.nombre = row["curso"].ToString();
                        if (!row["grado"].ToString().Equals("")) 
                            dato.grado = row["grado"].ToString();
                        lista.Add(dato);
                    }
                }
            }
            return lista;
        }
 public CursoXRequisito(Carrera carrera, Curso curso,String requisito)
 {
     this.carrera = carrera;
     this.curso = curso;
     this.requisito = requisito;
 }
 /// <summary>
 /// consulta un Curso
 /// </summary>
 /// <param name="dato"></param>
 /// <returns></returns>
 public Curso consultarId(Curso dato)
 {
     return this.cursoDao.consultarId(dato);
 }
 /// <summary>
 /// verifica si existe un Curso
 /// </summary>
 /// <param name="dato"></param>
 /// <returns>TRUE si existe FALSE en caso contrario</returns>
 public bool existe(Curso dato)
 {
     return this.cursoDao.existe(dato);
 }
        /// <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
            {
                Curso curso = new Curso();
                //llena el objeto con los valores
                curso.idCurso = e.NewValues["idCurso"].ToString();
                curso.nombre = e.NewValues["nombre"].ToString();
                curso.grado = e.NewValues["grado"].ToString();
                curso.tipo = e.NewValues["tipo"].ToString();
                curso.costo = double.Parse(e.NewValues["costo"].ToString());
                curso.costoConvalidacion = double.Parse(e.NewValues["costoConvalidacion"].ToString());
                curso.costoSuficiencia = double.Parse(e.NewValues["costoSuficiencia"].ToString());
                curso.costoTutoria = double.Parse(e.NewValues["costoTutoria"].ToString());
                curso.comentario = e.NewValues["comentario"] == null ? null : e.NewValues["comentario"].ToString();
                curso.aplicaConvenio = e.NewValues["aplicaConvenio"].ToString();
                curso.usuarioModificacion = Session["usuario"].ToString();
                curso.estado = e.NewValues["estado"].ToString();
                cursoBo.modificar(curso);//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>
 /// elimina un curso
 /// </summary>
 /// <param name="dato"></param>
 public void eliminar(Curso dato)
 {
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_curso_DELETE");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idCurso", dato.idCurso);
         db.executeNonQuery(comando);
     }
 }
 /// <summary>
 /// verifica si existe una curso
 /// </summary>
 /// <param name="dato"></param>
 /// <returns>TRUE si existe FALSE en caso contrario</returns>
 public bool existe(Curso dato)
 {
     Curso objeto = new Curso();
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_curso_SELECT_ByID");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idCurso", dato.idCurso);
         DataSet ds = db.executeReader(comando, "curso");
         if (ds.Tables[0].Rows.Count > 0)
         {
             return true;
         }
         else
         {
             return false;
         }
     } 
         
 }
 /// <summary>
 /// consulta todos los carreras
 /// </summary>
 /// <returns>List</returns>
 public List<Curso> consultaCursoXEstudisteCarreraPeriodo(Int32 idCarrera, Int32 idEstudiante, String idPeriodo)
 {
     List<Curso> lista = new List<Curso>();
     Database db = DatabaseFactory.openDatabase("matricula_web_db");
     MySqlCommand comando = new MySqlCommand("sp_curso_SELECT_ByEstudisteCarreraPeriodo");
     comando.CommandType = CommandType.StoredProcedure;
     comando.Parameters.AddWithValue("p_idCarrera", idCarrera);
     comando.Parameters.AddWithValue("p_idEstudiante", idEstudiante);
     comando.Parameters.AddWithValue("p_idPeriodo", idPeriodo); 
     //indicamos el nombre de la tabla
     DataSet ds = db.executeReader(comando, "curso");
     foreach (DataRow row in ds.Tables[0].Rows)
     {
         Curso dato = new Curso();
         if (!row["idCurso"].ToString().Equals("")) 
             dato.idCurso = row["idCurso"].ToString();
         if (!row["nombre"].ToString().Equals("")) 
             dato.nombre = row["nombre"].ToString();
         if (!row["grado"].ToString().Equals("")) 
             dato.grado = row["grado"].ToString();
         if (!row["tipo"].ToString().Equals("")) 
             dato.tipo = row["tipo"].ToString();
         if (!row["costo"].ToString().Equals("")) 
             dato.costo = double.Parse(row["costo"].ToString());
         if (!row["costoConvalidacion"].ToString().Equals("")) 
             dato.costoConvalidacion = double.Parse(row["costoConvalidacion"].ToString());
         if (!row["costoSuficiencia"].ToString().Equals("")) 
             dato.costoSuficiencia = double.Parse(row["costoSuficiencia"].ToString());
         if (!row["costoTutoria"].ToString().Equals(""))
             dato.costoTutoria = double.Parse(row["costoTutoria"].ToString());
         if (!row["comentario"].ToString().Equals("")) 
             dato.comentario = row["comentario"].ToString();
         if (!row["aplicaConvenio"].ToString().Equals("")) 
             dato.aplicaConvenio = row["aplicaConvenio"].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 todos los carreras
 /// </summary>
 /// <returns>List</returns>
 public List<Curso> consultarTodos()
 {
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         List<Curso> lista = new List<Curso>();
         MySqlCommand comando = new MySqlCommand("sp_curso_SELECT_all");
         comando.CommandType = CommandType.Text;
         //indicamos el nombre de la tabla
         DataSet ds = db.executeReader(comando, "curso");
         foreach (DataRow row in ds.Tables[0].Rows)
         {
             Curso dato = new Curso();
             if (!row["idCurso"].ToString().Equals(""))
                 dato.idCurso = row["idCurso"].ToString();
             if (!row["nombre"].ToString().Equals(""))
                 dato.nombre = row["nombre"].ToString();
             if (!row["grado"].ToString().Equals(""))
                 dato.grado = row["grado"].ToString();
             if (!row["tipo"].ToString().Equals(""))
                 dato.tipo = row["tipo"].ToString();
             if (!row["costo"].ToString().Equals(""))
                 dato.costo = double.Parse(row["costo"].ToString());
             if (!row["costoConvalidacion"].ToString().Equals(""))
                 dato.costoConvalidacion = double.Parse(row["costoConvalidacion"].ToString());
             if (!row["costoSuficiencia"].ToString().Equals(""))
                 dato.costoSuficiencia = double.Parse(row["costoSuficiencia"].ToString());
             if (!row["costoTutoria"].ToString().Equals(""))
                 dato.costoTutoria = double.Parse(row["costoTutoria"].ToString());
             if (!row["comentario"].ToString().Equals(""))
                 dato.comentario = row["comentario"].ToString();
             if (!row["aplicaConvenio"].ToString().Equals(""))
                 dato.aplicaConvenio = row["aplicaConvenio"].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 un Curso
        /// </summary>
        /// <param name="dato"></param>
        /// <returns></returns>
        public Curso consultarId(Curso dato)
        {

            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                MySqlCommand comando = new MySqlCommand("sp_curso_SELECT_ByID");
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("p_idCurso", dato.idCurso);
                //Despues del comando indicar el nombre de la tabla
                DataSet ds = db.executeReader(comando, "curso");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    DataRow row = ds.Tables[0].Rows[0];
                    if (!row["idCurso"].ToString().Equals(""))
                        dato.idCurso =(row["idCurso"].ToString());
                    if (!row["nombre"].ToString().Equals(""))
                        dato.nombre = row["nombre"].ToString();
                    if (!row["grado"].ToString().Equals(""))
                        dato.grado = row["grado"].ToString();

                    if (!row["tipo"].ToString().Equals(""))
                        dato.tipo = row["tipo"].ToString();
                    if (!row["costo"].ToString().Equals("")) 
                        dato.costo = double.Parse(row["costo"].ToString());
                    if (!row["costoConvalidacion"].ToString().Equals("")) 
                        dato.costoConvalidacion = double.Parse(row["costoConvalidacion"].ToString());
                    if (!row["costoSuficiencia"].ToString().Equals("")) 
                        dato.costoSuficiencia = double.Parse(row["costoSuficiencia"].ToString());
                    if (!row["costoTutoria"].ToString().Equals("")) 
                        dato.costoTutoria = double.Parse(row["costoTutoria"].ToString());
                    if (!row["comentario"].ToString().Equals("")) 
                        dato.comentario = row["comentario"].ToString();
                    if (!row["aplicaConvenio"].ToString().Equals("")) 
                        dato.aplicaConvenio = row["aplicaConvenio"].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>
        /// consulta todos los cursos_x_requisito
        /// </summary>
        /// <returns>List</returns>
        public List<CursoXRequisito> consultarTodos()
        {
            List<CursoXRequisito> lista = new List<CursoXRequisito>();
            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                MySqlCommand comando = new MySqlCommand("sp_curso_requisito_SELECT_all");
                comando.CommandType = CommandType.Text;
                //indicamos el nombre de la tabla
                DataSet ds = db.executeReader(comando, "curso_requisito");
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    CursoXRequisito dato = new CursoXRequisito();

                    CarreraDao CarreraDao = new CarreraDao();
                    Carrera oCarrera = new Carrera(Int32.Parse(row["idCarrera"].ToString()));
                    oCarrera = CarreraDao.consultarId(oCarrera);

                    CursoDao CursoDao = new CursoDao();
                    Curso oCurso = new Curso(row["idCurso"].ToString());
                    oCurso = CursoDao.consultarId(oCurso);

                    //Curso oRequisito = new Curso(row["requisito"].ToString());
                    //oRequisito = CursoDao.consultarId(oCurso);

                    if (!row["requisito"].ToString().Equals(""))
                        dato.requisito = row["requisito"].ToString();
                    dato.carrera = oCarrera;
                    dato.curso = oCurso;
                    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 cursoXRequisito
        /// </summary>
        /// <param name="dato"></param>
        /// <returns></returns>
        public CursoXRequisito consultarId(CursoXRequisito dato)
        {

            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                MySqlCommand comando = new MySqlCommand("sp_curso_requisito_SELECT_ByID");
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("p_idCarrera", dato.carrera.idCarrera);
                comando.Parameters.AddWithValue("p_idCurso", dato.curso.idCurso);
                comando.Parameters.AddWithValue("p_requisito", dato.requisito);
                //Despues del comando indicar el nombre de la tabla
                DataSet ds = db.executeReader(comando, "curso_requisito");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    DataRow row = ds.Tables[0].Rows[0];

                    Carrera oCarrera = new Carrera(Int32.Parse(row["idCarrera"].ToString()));
                    Curso oCurso = new Curso(row["idCurso"].ToString());
                    //Curso oRequisito = new Curso(row["requisito"].ToString());

                    if (!row["requisito"].ToString().Equals("")) 
                        dato.requisito = row["requisito"].ToString();
                    dato.carrera = oCarrera;
                    dato.curso = oCurso;
                    if (!row["estado"].ToString().Equals("")) 
                        dato.estado = row["estado"].ToString();
                    //dato.requisito = oRequisito;

                    //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;
            }
        }
 public CursoXCarrera(Carrera carrera, Curso curso)
 {
     this.carrera = carrera;
     this.curso = curso;            
 }