/// <summary>
        /// modifica una MatriculaConvalidacion
        /// </summary>
        /// <param name="dato"></param>        
        public void modificar(MatriculaConvalidacion dato)
        {
            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                MySqlCommand comando = new MySqlCommand("sp_matricula_convalidacion_UPDATE");
                comando.CommandType = CommandType.StoredProcedure;

               
                comando.Parameters.AddWithValue("p_matricula", dato.matricula.idMatricula);
                comando.Parameters.AddWithValue("p_curso", dato.curso.idCurso);
                comando.Parameters.AddWithValue("p_estudiante", dato.estudiante.idEstudiante );
                  
                comando.Parameters.AddWithValue("p_codigoConvalidacion", dato.codigoConvalidacion);
                comando.Parameters.AddWithValue("p_nombreConvalidacion", dato.nombreConvalidacion);
                comando.Parameters.AddWithValue("p_institucionConvalidacion", dato.institucionConvalidacion);
                comando.Parameters.AddWithValue("p_notaConvalidacion", dato.notaConvalidacion);
                comando.Parameters.AddWithValue("p_comentarioConvalidacion", dato.comentarioConvalidacion); 

                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",pUsuario);
                comando.Parameters.AddWithValue("p_usuarioModificacion", dato.usuarioModificacion);
                
                db.executeNonQuery(comando);
            }
        }
  /// <summary>
 /// elimina una MatriculaConvalidacion
 /// </summary>
 /// <param name="dato"></param>
 public void eliminar(MatriculaConvalidacion dato)
 {
     if (this.existe(dato))
     {
         this.matriculaConvalidadcionDao.eliminar(dato);
     }
     else
     {
         throw new Exception("No existe el registro.");
     }
 }
        /// <summary>
        /// crea una MatriculaConvalidacion nuevo
        /// </summary>
        /// <param name="dato"></param>
        public void nuevo(MatriculaConvalidacion dato)
        {

            if (!this.existe(dato))
            {
                this.matriculaConvalidadcionDao.nuevo(dato);
            }
            else
            {
                throw new Exception("Ya existe el registro.");
            }
        }
 /// <summary>
 /// consulta una Matricula
 /// </summary>
 /// <param name="dato"></param>
 /// <returns></returns>
 public MatriculaConvalidacion consultarId(MatriculaConvalidacion dato)
 {
     dato = this.matriculaConvalidadcionDao.consultarId(dato);
     if (dato != null)
     {
         dato.curso = this.cursoBo.consultarId(new Curso(dato.curso.idCurso));
         dato.matricula = this.matriculaBo.consultarId(new Class.Matricula .Matricula (dato.matricula.idMatricula)); 
         dato.estudiante = this.estudianteBo.consultarId(new Estudiante(dato.estudiante.idEstudiante));
     }
     return dato;
 }
 /// <summary>
 /// verifica si existe una MatriculaConvalidacion
 /// </summary>
 /// <param name="dato"></param>
 /// <returns>TRUE si existe FALSE en caso contrario</returns>
 public bool existe(MatriculaConvalidacion dato)
 {
     return this.matriculaConvalidadcionDao.existe(dato);
 }
        /// <summary>
        /// actualiza un curso martriculado
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ASPxGridViewCursoMatriculado_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
        {
            try
            {
                MatriculaDetalle dato = new MatriculaDetalle();
                //llena el objeto con los valores
                dato.matricula.idMatricula = Int32.Parse(e.NewValues["matricula"].ToString());
                dato.producto = e.NewValues["producto"].ToString();
                dato = this.matriculaDetalleBo.consultarId(dato);
                dato.costo = Double.Parse(e.NewValues["costo"].ToString());
                dato.esConvalidacion = e.NewValues["esConvalidacion"].ToString();
                dato.esPruebaGrado = e.NewValues["esPruebaGrado"].ToString();
                //dato.omiteRequisitos = e.NewValues["omiteRequisitos"].ToString();
                dato.estado = e.NewValues["estado"] == null ? null : e.NewValues["estado"].ToString();
                dato.usuarioModificacion = Session["usuario"].ToString();
                this.matriculaDetalleBo.modificar(dato);//agrega el objeto a la base de datos 

                //si es una convalidacion crea el registro correspondiente si se modifico el valor
                if (!e.NewValues["esConvalidacion"].Equals(e.OldValues["esConvalidacion"]))
                {
                    MatriculaConvalidacion convalidacion = new MatriculaConvalidacion(dato.matricula.idMatricula, dato.producto);
                    convalidacion.usuarioCreacion = Session["usuario"].ToString();
                    convalidacion.estudiante.idEstudiante = Int32.Parse(this.cmbEstudiante.Value.ToString());
                    convalidacion.estado = "PENDIENTE";

                    if (Confirmacion.SI.ToString().Equals(dato.esConvalidacion))
                    {
                        if (!this.matriculaConvalidacionBo.existe(convalidacion))//si no exite lo agrega
                        {
                            this.matriculaConvalidacionBo.nuevo(convalidacion);
                        }
                    }
                    else
                    {//si no es convalizacion elimina el dato
                        if (this.matriculaConvalidacionBo.existe(convalidacion))//si  exite lo agrega
                        {
                            this.matriculaConvalidacionBo.eliminar(convalidacion);
                        }
                    }
                }

                //si es una prueba de grado crea el registro correspondiente si se modifico el valor
                if (!e.NewValues["esPruebaGrado"].Equals(e.OldValues["esPruebaGrado"]))
                {
                    MatriculaPruebaGrado pruebaGrado = new MatriculaPruebaGrado(dato.matricula.idMatricula, dato.producto);
                    pruebaGrado.usuarioCreacion = Session["usuario"].ToString();
                    pruebaGrado.estudiante.idEstudiante = Int32.Parse(this.cmbEstudiante.Value.ToString());
                    pruebaGrado.estado = "PENDIENTE";

                    if (Confirmacion.SI.ToString().Equals(dato.esPruebaGrado))
                    {
                        if (!this.matriculaPruebaGradoBo.existe(pruebaGrado))//si no exite lo agrega
                        {
                            this.matriculaPruebaGradoBo.nuevo(pruebaGrado);
                        }
                    }
                    else
                    {//si no es convalizacion elimina el dato
                        if (this.matriculaPruebaGradoBo.existe(pruebaGrado))//si  exite lo agrega
                        {
                            this.matriculaPruebaGradoBo.eliminar(pruebaGrado);
                        }
                    }
                }

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

                this.lblMensaje.Text = String.Format("Curso: {0}, modificado.", dato.productoNombre);
                this.lblMensaje.CssClass = "successMessage";
            }
            catch (Exception ex)
            {
                this.lblMensaje.Text = Utilidades.validarExepcionSQL(ex.Message);
                this.lblMensaje.CssClass = "errorMessage";
                Session["errorMessage"] = ex.Message;
            }
            finally
            {
                this.cargarDatos();//refescar los datos
            }
        }
        /// <summary>
        /// modifica la convalidadción
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ASPxGridViewConvalidacion_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
        {
            try
            {
                MatriculaConvalidacion dato = new MatriculaConvalidacion();
                dato.matricula.idMatricula = Int32.Parse(e.NewValues["idMatricula"].ToString());
                dato.curso.idCurso = e.NewValues["curso"].ToString();
                dato = this.matriculaConvalidacionBo.consultarId(dato);

                if (dato.estado.Equals("PROCESO"))
                {
                    this.lblMensaje.Text = "Solo de puede modificar la matrícula si esta en PROCESO.";
                    this.lblMensaje.CssClass = "errorMessage";
                }
                else
                {
                    dato.codigoConvalidacion = e.NewValues["codigoConvalidacion"].ToString();
                    dato.comentarioConvalidacion = e.NewValues["comentarioConvalidacion"].ToString();
                    dato.institucionConvalidacion = e.NewValues["institucionConvalidacion"].ToString();
                    dato.nombreConvalidacion = e.NewValues["nombreConvalidacion"].ToString();
                    dato.notaConvalidacion = Double.Parse(e.NewValues["notaConvalidacion"].ToString());
                    dato.usuarioModificacion = Session["usuario"].ToString();
                    this.matriculaConvalidacionBo.modificar(dato);

                    this.lblMensaje.Text = "Registro modificado.";
                    this.lblMensaje.CssClass = "successMessage";
                }

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

            }
            catch (Exception ex)
            {
                this.lblMensaje.Text = Utilidades.validarExepcionSQL(ex.Message);
                this.lblMensaje.CssClass = "errorMessage";
                Session["errorMessage"] = ex.Message;
            }
            finally
            {
                this.cargarDatos();
            }
        }
 /// <summary>
 /// elimina una MatriculaConvalidacion
 /// </summary>
 /// <param name="dato"></param>
 public void eliminar(MatriculaConvalidacion dato)
 {
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_matricula_convalidacion_DELETE");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_matricula", dato.matricula.idMatricula);
         comando.Parameters.AddWithValue("p_curso", dato.curso.idCurso);
         db.executeNonQuery(comando);
     }
 }
        /// <summary>
        /// verifica si existe una  MatriculaConvalidacion
        /// </summary>
        /// <param name="dato"></param>
        /// <returns>TRUE si existe FALSE en caso contrario</returns>
        public bool existe(MatriculaConvalidacion dato)
        {
            MatriculaConvalidacion objeto = new MatriculaConvalidacion();
            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                MySqlCommand comando = new MySqlCommand("sp_matricula_convalidacion_SELECT_ByID");
                comando.CommandType = CommandType.StoredProcedure;
               comando.Parameters.AddWithValue("p_matricula", dato.matricula.idMatricula);
                comando.Parameters.AddWithValue("p_curso", dato.curso.idCurso);
                DataSet ds = db.executeReader(comando, "matricula_convalidacion");
                if (ds.Tables[0].Rows.Count > 0)
                {

                    return true;
                }
                else
                {
                    return false;
                }
            } 
        }
                /// <summary>
        /// consulta todas las aulas
        /// </summary>
        /// <returns>List</returns>
        public List<MatriculaConvalidacion> consultarTodos()
        {
            List<MatriculaConvalidacion> lista = new List<MatriculaConvalidacion>();
            Database db = DatabaseFactory.openDatabase("matricula_web_db");
            MySqlCommand comando = new MySqlCommand("sp_matricula_convalidacion_SELECT_all");
            comando.CommandType = CommandType.Text;
            //indicamos el nombre de la tabla
            DataSet ds = db.executeReader(comando, "matricula_convalidacion");
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                MatriculaConvalidacion dato = new MatriculaConvalidacion();
                 if (!row["matricula"].ToString().Equals(""))
                    dato.matricula.idMatricula =  Int32.Parse (row["matricula"].ToString() );
                if (!row["curso"].ToString().Equals(""))
                    dato.curso.idCurso  =  row["curso"].ToString() ;
                if (!row["estudiante"].ToString().Equals(""))
                    dato.estudiante.idEstudiante  =  Int32.Parse (row["estudiante"].ToString());

                if (!row["codigoConvalidacion"].ToString().Equals(""))
                    dato.codigoConvalidacion =  row["codigoConvalidacion"].ToString() ;
                if (!row["nombreConvalidacion"].ToString().Equals(""))
                    dato.nombreConvalidacion =  row["nombreConvalidacion"].ToString() ;
                if (!row["institucionConvalidacion"].ToString().Equals(""))
                    dato.institucionConvalidacion =  row["institucionConvalidacion"].ToString() ;
                if (!row["notaConvalidacion"].ToString().Equals(""))
                    dato.notaConvalidacion =  Double.Parse (row["notaConvalidacion"].ToString()) ;
                if (!row["comentarioConvalidacion"].ToString().Equals(""))
                    dato.comentarioConvalidacion =  row["comentarioConvalidacion"].ToString() ;
                      
                if (!row["estado"].ToString().Equals(""))
                    dato.estado = row["estado"].ToString();  
                if (!row["usuarioCreacion"].ToString().Equals(""))
                    dato.usuarioCreacion = row["usuarioCreacion"].ToString();
                if (!row["usuarioModificacion"].ToString().Equals(""))
                    dato.usuarioModificacion = row["usuarioModificacion"].ToString(); 
                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 MatriculaConvalidacion
        /// </summary>
        /// <param name="dato"></param>
        /// <returns></returns>
        public MatriculaConvalidacion consultarId(MatriculaConvalidacion dato)
        {

            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                MySqlCommand comando = new MySqlCommand("sp_matricula_convalidacion_SELECT_ByID");
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("p_matricula", dato.matricula.idMatricula);
                comando.Parameters.AddWithValue("p_curso", dato.curso.idCurso);
                //Despues del comando indicar el nombre de la tabla
                DataSet ds = db.executeReader(comando, "matricula_convalidacion");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    DataRow row = ds.Tables[0].Rows[0];

                    if (!row["matricula"].ToString().Equals(""))
                        dato.matricula.idMatricula =  Int32.Parse (row["matricula"].ToString() );
                    if (!row["curso"].ToString().Equals(""))
                        dato.curso.idCurso  =  row["curso"].ToString() ;
                    if (!row["estudiante"].ToString().Equals(""))
                        dato.estudiante.idEstudiante  =  Int32.Parse (row["estudiante"].ToString());

                    if (!row["codigoConvalidacion"].ToString().Equals(""))
                        dato.codigoConvalidacion =  row["codigoConvalidacion"].ToString() ;
                    if (!row["nombreConvalidacion"].ToString().Equals(""))
                        dato.nombreConvalidacion =  row["nombreConvalidacion"].ToString() ;
                    if (!row["institucionConvalidacion"].ToString().Equals(""))
                        dato.institucionConvalidacion =  row["institucionConvalidacion"].ToString() ;
                    if (!row["notaConvalidacion"].ToString().Equals(""))
                        dato.notaConvalidacion = Double.Parse(row["notaConvalidacion"].ToString());
                    if (!row["comentarioConvalidacion"].ToString().Equals(""))
                        dato.comentarioConvalidacion =  row["comentarioConvalidacion"].ToString() ;
                      
                    if (!row["estado"].ToString().Equals(""))
                        dato.estado = row["estado"].ToString();  
                    if (!row["usuarioCreacion"].ToString().Equals(""))
                        dato.usuarioCreacion = row["usuarioCreacion"].ToString();
                    if (!row["usuarioModificacion"].ToString().Equals(""))
                        dato.usuarioModificacion = row["usuarioModificacion"].ToString(); 
                    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;
            }
        }