/// <summary>
 /// elimina una ausencia
 /// </summary>
 /// <param name="dato"></param>
 public void eliminar(Ausencia dato)
 {
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_ausencia_DELETE");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idAusencia", dato.idAusencia);
         db.executeNonQuery(comando);
     }
 }
  /// <summary>
 /// elimina una ausencia
 /// </summary>
 /// <param name="dato"></param>
 public void eliminar(Ausencia dato)
 {
     if (this.existe(dato))
     {
         this.ausenciaDao.eliminar(dato);
     }
     else
     {
         throw new Exception("No existe el registro.");
     }
 }
        /// <summary>
        /// crea una ausencia nuevo
        /// </summary>
        /// <param name="dato"></param>
        public void nuevo(Ausencia dato)
        {

            if (!this.existe(dato))
            {
                this.ausenciaDao.nuevo(dato);
            }
            else
            {
                throw new Exception("Ya existe el registro.");
            }
        }
 /// <summary>
 /// modifica una ausencia
 /// </summary>
 /// <param name="dato"></param>        
 public void modificar(Ausencia dato)
 {
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_ausencia_UPDATE");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idAusencia", dato.idAusencia);
         comando.Parameters.AddWithValue("p_estudiante", dato.estudiante);
         comando.Parameters.AddWithValue("p_estado", dato.estado);
         comando.Parameters.AddWithValue("p_observaciones", dato.observaciones);
         comando.Parameters.AddWithValue("p_trimestre", dato.trimestre);
         comando.Parameters.AddWithValue("p_lecciones", dato.lecciones);
         comando.Parameters.AddWithValue("p_ofertaAcademica", dato.ofertaAcademica);
         comando.Parameters.AddWithValue("p_fechaAusencia", dato.fechaAusencia);
         //comando.Parameters.AddWithValue("fechaCreacion", DateTime.Today);
         //comando.Parameters.AddWithValue("fechaModificacion", DateTime.Today);
         //comando.Parameters.AddWithValue("usuarioCreacion",pUsuario);
         comando.Parameters.AddWithValue("p_usuarioModificacion", dato.usuarioModificacion);
         db.executeNonQuery(comando);
     }
 }
        /// <summary>
        /// guarda una ausencia
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            try
            {
                Ausencia ausencia = new Ausencia();
                ausencia.observaciones = this.txtObservaciones.Text;
                ausencia.estado = this.cmbEstados.Text;
                ausencia.fechaAusencia = DateTime.Parse(this.txtFechaAusencia .Text );
                ausencia.trimestre = this.cmbTrimestres.Text;
                ausencia.ofertaAcademica = Int32.Parse(this.cmbProfesor.Value.ToString());
                ausencia.usuarioCreacion = Session["usuario"].ToString();
                ausencia.lecciones = Int32.Parse(this.cmbLecciones.Text);
                ausencia.estudiante = Int32.Parse(this.cmbEstudiantes.Value.ToString());
                ausenciaBo.nuevo(ausencia);

                this.lblMensaje.Text = "Registro agregado.";
                this.lblMensaje.CssClass = "successMessage";

            }
            catch (Exception ex)
            {
                this.lblMensaje.Text = ex.Message;
                this.lblMensaje.CssClass = "errorMessage";
                Session["errorMessage"] = ex.Message;
            }
        }
        /// <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
            {
                Ausencia ausencia = new Ausencia();
                ausencia.idAusencia = Int32.Parse(e.NewValues["idAusencia"].ToString());
                ausencia = ausenciaBo.consultarId(ausencia);
                ausencia.estado = e.NewValues["estado"].ToString();
                ausencia.observaciones = e.NewValues["observaciones"] == null ? null : e.NewValues["observaciones"].ToString();
                ausencia.usuarioModificacion = Session["usuario"].ToString();
                ausencia.lecciones = Int32.Parse(e.NewValues["lecciones"].ToString());
                ausenciaBo.modificar(ausencia);

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

                this.cargarDatos();//refescar los datos
            }
            catch (Exception ex)
            {
                this.lblMensaje.Text = ex.Message;
                this.lblMensaje.CssClass = "errorMessage";
                Session["errorMessage"] = ex.Message;
            }
        }
 /// <summary>
 /// verifica si existe una  ausencia
 /// </summary>
 /// <param name="dato"></param>
 /// <returns>TRUE si existe FALSE en caso contrario</returns>
 public bool existe(Ausencia dato)
 {
     Ausencia objeto = new Ausencia();
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_ausencia_SELECT_ByID");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idAusencia", dato.idAusencia);
         DataSet ds = db.executeReader(comando, "ausencia");
         if (ds.Tables[0].Rows.Count > 0)
         {
             return true;
         }
         else
         {
             return false;
         }
     }
 }
        /// <summary>
        /// consulta todas las ausencias
        /// </summary>
        /// <returns>List</returns>
        public List<Ausencia> consultarTodos()
        {
            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                List<Ausencia> lista = new List<Ausencia>();
                MySqlCommand comando = new MySqlCommand("sp_ausencia_SELECT_all");
                comando.CommandType = CommandType.Text;
                //indicamos el nombre de la tabla
                DataSet ds = db.executeReader(comando, "ausencia");
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    Ausencia dato = new Ausencia();
                    if (!row["idAusencia"].ToString().Equals(""))
                        dato.idAusencia = Int32.Parse(row["idAusencia"].ToString());

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

                    if (!row["estado"].ToString().Equals(""))
                        dato.estado = row["estado"].ToString();

                    if (!row["fechaAusencia"].ToString().Equals(""))
                        dato.fechaAusencia = DateTime.Parse(row["fechaAusencia"].ToString());

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

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

                    if (!row["estudianteNombre"].ToString().Equals(""))
                        dato.estudianteNombre = row["estudianteNombre"].ToString();

                    if (!row["trimestre"].ToString().Equals(""))
                        dato.trimestre = row["trimestre"].ToString();

                    if (!row["observaciones"].ToString().Equals(""))
                        dato.observaciones = row["observaciones"].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 Ausencia
        /// </summary>
        /// <param name="dato"></param>
        /// <returns></returns>
        public Ausencia consultarId(Ausencia dato)
        {

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

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

                    if (!row["estado"].ToString().Equals(""))
                        dato.estado = row["estado"].ToString();

                    if (!row["trimestre"].ToString().Equals(""))
                        dato.trimestre = row["trimestre"].ToString();


                    if (!row["fechaAusencia"].ToString().Equals(""))
                        dato.fechaAusencia = DateTime.Parse(row["fechaAusencia"].ToString());

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

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

                    if (!row["observaciones"].ToString().Equals(""))
                        dato.observaciones = row["observaciones"].ToString();

                    if (!row["estudianteNombre"].ToString().Equals(""))
                        dato.estudianteNombre = row["estudianteNombre"].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 una Ausencia
 /// </summary>
 /// <param name="dato"></param>
 /// <returns></returns>
 public Ausencia consultarId(Ausencia dato)
 { 
     return this.ausenciaDao.consultarId(dato); 
 }
 /// <summary>
 /// verifica si existe una ausencia
 /// </summary>
 /// <param name="dato"></param>
 /// <returns>TRUE si existe FALSE en caso contrario</returns>
 public bool existe(Ausencia dato)
 {
     return this.ausenciaDao.existe(dato);
 }