/// <summary>
 /// modifica un Profesor
 /// </summary>
 /// <param name="dato"></param>        
 public void modificar(Profesor dato)
 {
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_profesor_UPDATE");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idprofesor", dato.idProfesor);
         comando.Parameters.AddWithValue("p_apellido1", dato.apellido1);
         comando.Parameters.AddWithValue("p_apellido2", dato.apellido2);
         comando.Parameters.AddWithValue("p_nombre", dato.nombre);
         comando.Parameters.AddWithValue("p_identificacion", dato.identificacion);
         comando.Parameters.AddWithValue("p_sexo", dato.sexo);
         comando.Parameters.AddWithValue("p_fechaNacimiento", dato.fechaNacimiento);
         comando.Parameters.AddWithValue("p_estadoCivil", dato.estadoCivil);
         comando.Parameters.AddWithValue("p_direccion", dato.direccion);
         comando.Parameters.AddWithValue("p_provincia", dato.provincia.idProvincia );
         comando.Parameters.AddWithValue("p_canton", dato.canton.idCanton );
         comando.Parameters.AddWithValue("p_distrito", dato.distrito.idDistrito ); 
         comando.Parameters.AddWithValue("p_nacionalidad", dato.nacionalidad.idNacionalidad );
         comando.Parameters.AddWithValue("p_email1", dato.email1);
         comando.Parameters.AddWithValue("p_email2", dato.email2);
         comando.Parameters.AddWithValue("p_telefonoOficina", dato.telefonoOficina);
         comando.Parameters.AddWithValue("p_telefonoCelular", dato.telefonoCelular);
         comando.Parameters.AddWithValue("p_telefonoCasa", dato.telefonoCasa);
         comando.Parameters.AddWithValue("p_grado", dato.grado);
         comando.Parameters.AddWithValue("p_coordinador", dato.coordinador);
         comando.Parameters.AddWithValue("p_comentario", dato.comentario); 
         comando.Parameters.AddWithValue("p_estado", dato.estado);
         comando.Parameters.AddWithValue("p_usuarioModificacion", dato.usuarioModificacion);	 
         db.executeNonQuery(comando);
     }
 }
        public List<Profesor> consultarProfesorXCurso(string pPeriodo, string pCurso, string pProfesor, string pDia1)
        {
            List<Profesor> lista = new List<Profesor>();
            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_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)
                    {
                        Profesor dato = new Profesor();
                        if (!row["idProfesor"].ToString().Equals("")) 
                            dato.idProfesor = int.Parse(row["idProfesor"].ToString());
                        if (!row["nombreProfesor"].ToString().Equals("")) 
                            dato.nombre = row["nombreProfesor"].ToString();
                        if (!row["Apellido1Profesor"].ToString().Equals("")) 
                            dato.apellido1 = row["Apellido1Profesor"].ToString();
                        if (!row["Apellido2Profesor"].ToString().Equals("")) 
                            dato.apellido2 = row["Apellido2Profesor"].ToString();
                        lista.Add(dato);
                    }
                }
            }
            return lista;
        }
 /// <summary>
 /// crea un profesor nuevo
 /// </summary>
 /// <param name="dato"></param>
 public void nuevo(Profesor dato)
 {
     if (!this.existe(dato))
     {
         this.profesorDao.nuevo(dato);
     }
     else
     {
         throw new Exception("Ya existe el registro.");
     }
 }
         /// <summary>
        /// elimina un profesor
        /// </summary>
        /// <param name="dato"></param>
        public void eliminar(Profesor dato)
        {

            if (this.existe(dato))
            {
                this.profesorDao.eliminar(dato);
            }
            else
            {
                throw new Exception("No existe el registro.");
            }
        }
        /// <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
            {
                Profesor profesor = new Profesor();
                //llena el objeto con los valores
                profesor.idProfesor = Int32.Parse(e.NewValues["idProfesor"].ToString());
                profesor.identificacion = e.NewValues["identificacion"].ToString();
                profesor.nombre = e.NewValues["nombre"].ToString();
                profesor.apellido1 = e.NewValues["apellido1"].ToString();
                profesor.apellido2 = e.NewValues["apellido2"].ToString();
                profesor.estadoCivil = e.NewValues["estadoCivil"].ToString();
                profesor.sexo = e.NewValues["sexo"].ToString();
                profesor.fechaNacimiento = DateTime.Parse(e.NewValues["fechaNacimiento"].ToString());
                profesor.estado = e.NewValues["estado"].ToString();

                profesor.provincia.idProvincia = Int32.Parse(e.NewValues["provincia"].ToString());
                profesor.canton.idCanton  = Int32.Parse(e.NewValues["canton"].ToString());
                profesor.distrito.idDistrito  = Int32.Parse(e.NewValues["distrito"].ToString());
                profesor.direccion = e.NewValues["direccion"].ToString();
                profesor.nacionalidad.idNacionalidad = Int32.Parse(e.NewValues["nacionalidad"].ToString());

                profesor.telefonoOficina = e.NewValues["telefonoOficina"]==null ? null : e.NewValues["telefonoOficina"].ToString();
                profesor.telefonoCelular = e.NewValues["telefonoCelular"]==null ? null : e.NewValues["telefonoCelular"].ToString();
                profesor.telefonoCasa = e.NewValues["telefonoCasa"]==null ? null : e.NewValues["telefonoCasa"].ToString();
                profesor.email1 = e.NewValues["email1"] == null ? null : e.NewValues["email1"].ToString();
                profesor.email2 = e.NewValues["email2"] == null ? null : e.NewValues["email2"].ToString();

                profesor.grado = e.NewValues["grado"].ToString();
                profesor.coordinador = e.NewValues["coordinador"].ToString();
                profesor.comentario = e.NewValues["comentario"]==null ? null : e.NewValues["comentario"].ToString(); 

                profesor.usuarioModificacion = Session["usuario"].ToString();

                profesorBo.modificar(profesor);//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>
 /// consulta una Profesor
 /// </summary>
 /// <param name="dato"></param>
 /// <returns></returns>
 public Profesor consultarId(Profesor dato)
 {
     return this.profesorDao.consultarId(dato);
 }
 /// <summary>
 /// verifica si existe un profesor
 /// </summary>
 /// <param name="dato"></param>
 /// <returns>TRUE si existe FALSE en caso contrario</returns>
 public bool existe(Profesor dato)
 {
     return this.profesorDao.existe(dato);
 }
 /// <summary>
 /// verifica si existe un Profesor
 /// </summary>
 /// <param name="dato"></param>
 /// <returns>TRUE si existe FALSE en caso contrario</returns>
 public bool existe(Profesor dato)
 {
     Profesor objeto = new Profesor();
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_profesor_SELECT_ByID");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idProfesor", dato.idProfesor);
         DataSet ds = db.executeReader(comando, "profesor");
         if (ds.Tables[0].Rows.Count > 0)
         {
             return true;
         }
         else
         {
             return false;
         }
     } 
 }
                /// <summary>
        /// consulta todas los profesors
        /// </summary>
        /// <returns>List</returns>
        public List<Profesor> consultarTodos()
        {
            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                List<Profesor> lista = new List<Profesor>();
                MySqlCommand comando = new MySqlCommand("sp_profesor_SELECT_all");
                comando.CommandType = CommandType.Text;
                //indicamos el nombre de la tabla
                DataSet ds = db.executeReader(comando, "profesor");
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    Profesor dato = new Profesor();
                    if (!row["idProfesor"].ToString().Equals(""))
                        dato.idProfesor = Int32.Parse(row["idProfesor"].ToString());
                    if (!row["identificacion"].ToString().Equals(""))
                        dato.identificacion = row["identificacion"].ToString();
                    if (!row["apellido1"].ToString().Equals(""))
                        dato.apellido1 = row["apellido1"].ToString();
                    if (!row["apellido2"].ToString().Equals(""))
                        dato.apellido2 = row["apellido2"].ToString();
                    if (!row["nombre"].ToString().Equals(""))
                        dato.nombre = row["nombre"].ToString();
                    if (!row["sexo"].ToString().Equals(""))
                        dato.sexo = row["sexo"].ToString();
                    if (!row["fechaNacimiento"].ToString().Equals(""))
                        dato.fechaNacimiento = DateTime.Parse(row["fechaNacimiento"].ToString());
                    if (!row["estadoCivil"].ToString().Equals(""))
                        dato.estadoCivil = row["estadoCivil"].ToString();

                    if (!row["direccion"].ToString().Equals(""))
                        dato.direccion = row["direccion"].ToString();
                    if (!row["provincia"].ToString().Equals(""))
                        dato.provincia.idProvincia = Int32.Parse(row["provincia"].ToString());
                    if (!row["canton"].ToString().Equals(""))
                        dato.canton.idCanton = Int32.Parse(row["canton"].ToString());
                    if (!row["distrito"].ToString().Equals(""))
                        dato.distrito.idDistrito = Int32.Parse(row["distrito"].ToString());

                    if (!row["email1"].ToString().Equals(""))
                        dato.email1 = row["email1"].ToString();
                    if (!row["email2"].ToString().Equals(""))
                        dato.email2 = row["email2"].ToString();
                    if (!row["telefonoOficina"].ToString().Equals(""))
                        dato.telefonoOficina = row["telefonoOficina"].ToString();
                    if (!row["telefonoCelular"].ToString().Equals(""))
                        dato.telefonoCelular = row["telefonoCelular"].ToString();
                    if (!row["telefonoCasa"].ToString().Equals(""))
                        dato.telefonoCasa = row["telefonoCasa"].ToString();
                    if (!row["grado"].ToString().Equals(""))
                        dato.grado = row["grado"].ToString();
                    if (!row["coordinador"].ToString().Equals(""))
                        dato.coordinador = row["coordinador"].ToString();
                    if (!row["comentario"].ToString().Equals(""))
                        dato.comentario = row["comentario"].ToString();
                    if (!row["nacionalidad"].ToString().Equals(""))
                        dato.nacionalidad.idNacionalidad = Int32.Parse(row["nacionalidad"].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());

                    lista.Add(dato);
                }
                return lista;
            }
        }
        /// <summary>
        /// consulta una Profesor
        /// </summary>
        /// <param name="dato"></param>
        /// <returns></returns>
        public Profesor consultarId(Profesor dato)
        {

            using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
            {
                MySqlCommand comando = new MySqlCommand("sp_profesor_SELECT_ByID");
                comando.CommandType = CommandType.StoredProcedure;
                comando.Parameters.AddWithValue("p_idprofesor", dato.idProfesor);
                //Despues del comando indicar el nombre de la tabla
                DataSet ds = db.executeReader(comando, "profesor");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    DataRow row = ds.Tables[0].Rows[0];
                    if (!row["idProfesor"].ToString().Equals("")) 
                        dato.idProfesor = Int32.Parse(row["idProfesor"].ToString());
                    if (!row["identificacion"].ToString().Equals("")) 
                        dato.identificacion = row["identificacion"].ToString();
                    if (!row["apellido1"].ToString().Equals("")) 
                        dato.apellido1 = row["apellido1"].ToString();
                    if (!row["apellido2"].ToString().Equals("")) 
                        dato.apellido2 = row["apellido2"].ToString();
                    if (!row["nombre"].ToString().Equals("")) 
                        dato.nombre = row["nombre"].ToString();
                    if (!row["sexo"].ToString().Equals("")) 
                        dato.sexo = row["sexo"].ToString();
                    if (!row["fechaNacimiento"].ToString().Equals(""))
                        dato.fechaNacimiento = DateTime.Parse(row["fechaNacimiento"].ToString());
                    if (!row["estadoCivil"].ToString().Equals("")) 
                        dato.estadoCivil = row["estadoCivil"].ToString();

                    if (!row["direccion"].ToString().Equals("")) 
                        dato.direccion = row["direccion"].ToString();
                    if (!row["provincia"].ToString().Equals(""))
                        dato.provincia.idProvincia = Int32.Parse(row["provincia"].ToString());
                    if (!row["canton"].ToString().Equals(""))
                        dato.canton.idCanton = Int32.Parse(row["canton"].ToString());
                    if (!row["distrito"].ToString().Equals(""))
                        dato.distrito.idDistrito = Int32.Parse(row["distrito"].ToString());

                    if (!row["email1"].ToString().Equals(""))
                        dato.email1 = row["email1"].ToString();
                    if (!row["email2"].ToString().Equals(""))
                        dato.email2 = row["email2"].ToString();
                    if (!row["telefonoOficina"].ToString().Equals("")) 
                        dato.telefonoOficina = row["telefonoOficina"].ToString();
                    if (!row["telefonoCelular"].ToString().Equals("")) 
                        dato.telefonoCelular = row["telefonoCelular"].ToString();
                    if (!row["telefonoCasa"].ToString().Equals("")) 
                        dato.telefonoCasa = row["telefonoCasa"].ToString();
                    if (!row["grado"].ToString().Equals("")) 
                        dato.grado = row["grado"].ToString();
                    if (!row["coordinador"].ToString().Equals("")) 
                        dato.coordinador = row["coordinador"].ToString();
                    if (!row["comentario"].ToString().Equals("")) 
                        dato.comentario = row["comentario"].ToString(); 
                    if (!row["nacionalidad"].ToString().Equals(""))
                        dato.nacionalidad.idNacionalidad  = Int32.Parse (row["nacionalidad"].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 un Profesor
 /// </summary>
 /// <param name="dato"></param>
 public void eliminar(Profesor dato)
 {
     using (Database db = DatabaseFactory.openDatabase("matricula_web_db"))
     {
         MySqlCommand comando = new MySqlCommand("sp_profesor_DELETE");
         comando.CommandType = CommandType.StoredProcedure;
         comando.Parameters.AddWithValue("p_idprofesor", dato.idProfesor);
         db.executeNonQuery(comando);
     }
 }