protected void btnInicioSesion_Click(object sender, EventArgs e)
        {
            Session["TipoUsuario"] = ddlTipoUsuario.SelectedValue;
            Session["NUsuario"] = txtNombreUsuario.Text;

            IMetodosLogin _metLogin = new MetodosLogin();
            if (_metLogin.VerificarUsuario(txtNombreUsuario.Text, txtContrasena.Text, Int32.Parse(ddlTipoUsuario.SelectedValue)))
            {
                switch (Int32.Parse(ddlTipoUsuario.SelectedValue))
                {
                    case 0:
                        IMetodosEstudiante _metEstudiante = new MetodosEstudiante();
                        Ado.ClasesComunes.Estudiante _estAlumno = _metEstudiante.ObtenerDatosEstudiante(txtNombreUsuario.Text,
                                                                        _metEstudiante.EstudianteExiste(txtNombreUsuario.Text));
                        Session["Nombre"] = _estAlumno.Nom_Nombre + " " + _estAlumno.Txt_Apellido1 + " " + _estAlumno.Txt_Apellido2;
                        Response.Redirect("~/Estudiante/Default.aspx");
                        break;
                    case 1:
                        Session["Nombre"] = txtNombreUsuario.Text;
                        Response.Redirect("~/Administrador/Default.aspx");
                        break;
                    default:
                        break;
                }
            }
            else
            {
                ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "Datos de sesión incorrectos",
                    "alert('Los datos de inicio de sesión son incorrectos');", true);
            }
        }
        /**
         * Constructor del viewmodel
         **/
        public FormularioViewModel(string p_carnet)
        {
            MetodosEstudiante _conexion = new MetodosEstudiante();

            //Obtenemos los datos iniciales del estudiante
            bool _estudianteExiste = _conexion.EstudianteExiste(p_carnet);
            Estudiante _estudiante = _conexion.ObtenerDatosEstudiante(p_carnet, _estudianteExiste);
            this.estudiante = _estudiante;
        }
 /**
 * Devuelve el plan de estudios de un estudiante.
 **/
 public PlanEstudios ObtenerPlanEstudios(string pCarnet)
 {
     IMetodosEstudiante _metEstudiante = new MetodosEstudiante();
     return _metEstudiante.ObtenerPlanEstudios(pCarnet, _metEstudiante.EstudianteExiste(pCarnet));
 }
 /**
  * Devuelve la informacion del estudiante al que
  * pertenece el carnet indicado
  **/
 public Estudiante ObtenerInformacionEstudiante(string pId)
 {
     IMetodosEstudiante _metEstudiante = new MetodosEstudiante();
     return _metEstudiante.ObtenerDatosEstudiante(pId, _metEstudiante.EstudianteExiste(pId));
 }
        /**
         * Guarda los datos del Estudiante en la base de datos
         **/
        public bool GuardarDatosEstudiantes(Estudiante pEstudiante, int pPlanEstudios)
        {
            IMetodosEstudiante _metEstudiante = new MetodosEstudiante();
            _objConexionBase = new Inclutec_BDEntities();
            try
            {
                if (_metEstudiante.EstudianteExiste(pEstudiante.Id_Carnet))
                {
                    SIFEstudiante _sifEstudiante = (from _sifEstudiantes in _objConexionBase.SIFEstudiantes
                                                   where _sifEstudiantes.id_Carnet == pEstudiante.Id_Carnet
                                                   select _sifEstudiantes).First();
                    _sifEstudiante.dir_email = pEstudiante.Dir_Email;
                    _sifEstudiante.num_celular = pEstudiante.Num_Celular;
                    _sifEstudiante.num_telefono = pEstudiante.Num_Telefono;
                }
                else
                {
                    SIFEstudiante _sifeEstudiante = new SIFEstudiante();
                    _sifeEstudiante.id_Carnet = pEstudiante.Id_Carnet;
                    _sifeEstudiante.nom_nombre = pEstudiante.Nom_Nombre;
                    _sifeEstudiante.txt_apellido_1 = pEstudiante.Txt_Apellido1;
                    _sifeEstudiante.txt_apellido_2 = pEstudiante.Txt_Apellido2;
                    _sifeEstudiante.num_telefono = pEstudiante.Num_Telefono;
                    _sifeEstudiante.num_celular = pEstudiante.Num_Celular;
                    _sifeEstudiante.dir_email = pEstudiante.Dir_Email;
                    _sifeEstudiante.FK_PlanEstudios_idPlanEstudios = pPlanEstudios;

                    _objConexionBase.AddToSIFEstudiantes(_sifeEstudiante);
                }

                _objConexionBase.SaveChanges();
                _objConexionBase.Connection.Close();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        /// <summary>
        /// Define las acciones a la hora de cargar la pagina.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //GET datos estudiante con un carnet
                string Txt_Carnet = (string)Session["NUsuario"];

                IMetodosEstudiante _metEstudiante = new MetodosEstudiante();

                #region Obtener Datos Estudiante
                //Revisamos si el estudiante existe en la bd local
                bool Bin_EstudianteExiste = _metEstudiante.EstudianteExiste(Txt_Carnet);
                //Obtenemos info del estudiante
                Ado.ClasesComunes.Estudiante _estudianteNuevo = new Ado.ClasesComunes.Estudiante();
                _estudianteNuevo = _metEstudiante.ObtenerDatosEstudiante(Txt_Carnet, Bin_EstudianteExiste);
                //Obtenemos plan de estudios del estudiante y lo asignamos
                Ado.ClasesComunes.PlanEstudios _planNuevo = new Ado.ClasesComunes.PlanEstudios();
                _planNuevo = _metEstudiante.ObtenerPlanEstudios(Txt_Carnet, Bin_EstudianteExiste);
                if (!Bin_EstudianteExiste)
                {
                    _estudianteNuevo.Id_Plan_Estudios = _planNuevo.Id_Plan_Estudios;
                }

                //Datos de backup
                string Txt_Sede = "CARTAGO";
                string Txt_CitaMatricula = _metEstudiante.ObtenerCitaMatricula(Txt_Carnet);
                #endregion

                #region Datos Asignados
                //Asigna datos estudiante a controles
                lblNombreCompleto.Text = _estudianteNuevo.Txt_Apellido1 + " " + _estudianteNuevo.Txt_Apellido2 + " " + _estudianteNuevo.Nom_Nombre;
                lblCarnet.Text = _estudianteNuevo.Id_Carnet;
                lblCarrera.Text = _planNuevo.Nom_Carrera;
                lblSede.Text = Txt_Sede;
                lblPlan.Text = _planNuevo.Id_Plan_Estudios.ToString();
                lblCitaMatricula.Text = Txt_CitaMatricula;
                txtTelefono.Text = _estudianteNuevo.Num_Telefono;
                txtCelular.Text = _estudianteNuevo.Num_Celular;
                txtCorreo.Text = _estudianteNuevo.Dir_Email;
                #endregion

                #region Cursos
                //Encuentra cursos y llena el autocomplete
                LinkedList<Curso> _cursos = new LinkedList<Curso>();
                _cursos = _metEstudiante.ObtenerCursosEstudiante(Txt_Carnet, null);

                foreach (var _cursoActual in _cursos)
                {
                    ListItem _item = new ListItem();
                    _item.Value = _cursoActual.Id_Curso.ToString();
                    _item.Text = _cursoActual.Txt_Curso;
                    ddlCursos.Items.Add(_item);
                }
                #endregion
                lblCodigoCursoSeleccionado.Text = "Sin código disponible";

                #region Grupos
                LinkedList<Grupo> _liGrupos = _metEstudiante.ObtenerGruposParaInclusion(Int32.Parse(ddlCursos.SelectedValue));

                if (_liGrupos.Count != 0)
                {
                    #region Encabezado de la tabla
                    TableHeaderRow Row_Encabezado = new TableHeaderRow();
                    TableHeaderCell Cel_EncabezadoGrupo = new TableHeaderCell();
                    Cel_EncabezadoGrupo.Text = "Número";
                    Row_Encabezado.Cells.Add(Cel_EncabezadoGrupo);
                    TableHeaderCell Cel_EncabezadoProfesor = new TableHeaderCell();
                    Cel_EncabezadoProfesor.Text = "Profesor";
                    Row_Encabezado.Cells.Add(Cel_EncabezadoProfesor);
                    TableHeaderCell Cel_EncabezadoHorario = new TableHeaderCell();
                    Cel_EncabezadoHorario.Text = "Horario";
                    Row_Encabezado.Cells.Add(Cel_EncabezadoHorario);
                    TableHeaderCell Cel_EncabezadoAcciones = new TableHeaderCell();
                    Cel_EncabezadoAcciones.Text = "Acciones";
                    Row_Encabezado.Cells.Add(Cel_EncabezadoAcciones);
                    tblGrupos.Rows.Add(Row_Encabezado);
                    #endregion

                    foreach (var _grupo in _liGrupos)
                    {
                        TableRow Row_Excepcion = new TableRow();

                        TableCell Cel_Estudiante = new TableCell();
                        Cel_Estudiante.Text = _grupo.Num_Grupo.ToString();
                        Row_Excepcion.Cells.Add(Cel_Estudiante);

                        TableCell Cel_Curso = new TableCell();
                        Cel_Curso.Text = _metEstudiante.ObtenerProfesor(_grupo.Id_Grupo);
                        Row_Excepcion.Cells.Add(Cel_Curso);

                        TableCell Cel_Grupo = new TableCell();
                        Cel_Grupo.Text = CrearHorario(_grupo.Li_Horarios);
                        Row_Excepcion.Cells.Add(Cel_Grupo);

                        TableCell Cel_Acciones = new TableCell();
                        ImageButton btnEliminar = new ImageButton();
                        btnEliminar.ImageUrl = "../Images/table_delete_row.png";
                        btnEliminar.AlternateText = "Eliminar";
                        btnEliminar.Enabled = false;
                        btnEliminar.ToolTip = "Eliminar";
                        //btnEliminar.Click += new ImageClickEventHandler(btnEliminar_Click);
                        Cel_Acciones.Controls.Add(btnEliminar);
                        Row_Excepcion.Cells.Add(Cel_Acciones);

                        tblGrupos.Rows.Add(Row_Excepcion);
                    }
                }
                else
                {
                    TableRow Row_SinGrupos = new TableRow();
                    TableCell Cel_SinGrupos = new TableCell();
                    Cel_SinGrupos.Text = "No se encuentran grupos para este curso";
                    Row_SinGrupos.Cells.Add(Cel_SinGrupos);
                    tblGrupos.Rows.Add(Row_SinGrupos);
                }
                #endregion

                Session["Estudiante"] = _estudianteNuevo;
                Session["Plan"] = _planNuevo;
            }
        }