private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (!CommonHelper.SeleccionoRegistro(dgvGrilla))
            {
                return;
            }

            if (!CommonHelper.Confirma())
            {
                return;
            }

            try
            {
                CarreraService s = new CarreraService();
                Carrera        c = (Carrera)dgvGrilla.SelectedRows[0].DataBoundItem;

                MateriaService ms = new MateriaService();
                if (ms.GetByCarreraId(c.Id).Count > 0)
                {
                    CommonHelper.ShowWarning("No se puede eliminar esta carrera; posee materias asociadas.");
                    return;
                }

                s.Delete(c.Id);
                cargarGrilla();
            }
            catch (Exception ex)
            {
                CommonHelper.ShowError(ex.Message);
            }
        }
        private void frmMateriasCorrelativas_Load(object sender, EventArgs e)
        {
            MateriaService s = new MateriaService();

            cmbMaterias.DataSource = s.GetByCarreraId(materia.Carrera.Id).FindAll(x => !x.Deshabilitado);
            cmbEstado.DataSource   = new List <EstadoMateria> {
                EstadoMateria.Aprobada, EstadoMateria.Regularizada
            };

            cmbMaterias.SelectedIndex = -1;
            cmbEstado.SelectedIndex   = -1;

            cargarGrilla();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Usuario"] == null)
            {
                Response.Redirect("~/Default.aspx");
                return;
            }

            Usuario usuario = (Usuario)Session["Usuario"];

            if (usuario.TipoUsuario != TipoUsuario.Estudiante)
            {
                Response.Redirect("~/Docente.aspx");
                return;
            }

            if (Session["MateriaEstudiante"] != null)
            {
                Session.Remove("MateriaEstudiante");
            }

            if (IsPostBack)
            {
                return;
            }

            #region Creacion de listado de materias a las que se puede inscribir

            AlumnoService  alumnoService  = new AlumnoService();
            MateriaService materiaService = new MateriaService();

            Alumno alumno = alumnoService.GetAlumnoByUserName(usuario.Nombre);

            List <AlumnoComision> alumnoComisiones = alumnoService.GetAlumnosComision()
                                                     .FindAll(x => x.Alumno.Id == alumno.Id && x.Deshabilitado == false);

            List <Materia> materiasAExcluir = alumnoComisiones
                                              .Where(x => x.Estado <= EstadoMateria.Cursando)
                                              .Select(x => x.Comision.Materia).ToList();

            List <Carrera> carreras = new CarreraService().GetByAlumnoId(alumno.Id);
            List <Materia> lista    = new List <Materia>();

            foreach (var carrera in carreras)
            {
                lista.AddRange(materiaService.GetByCarreraId(carrera.Id));
            }

            List <Materia> aux = new List <Materia>(lista);

            foreach (var materia in aux)
            {
                List <MateriaCorrelativa> materiasCorrelativas = materiaService.GetCorrelativasById(materia.Id)
                                                                 .FindAll(x => x.Deshabilitado == false);

                foreach (var correlativa in materiasCorrelativas)
                {
                    bool puedeCursar = false;

                    foreach (var alumnoComision in alumnoComisiones)
                    {
                        if (alumnoComision.Comision.Materia.Id == correlativa.Correlativa.Id &&
                            (alumnoComision.Estado == correlativa.EstadoRequerido || alumnoComision.Estado == EstadoMateria.Aprobada))
                        {
                            puedeCursar = true;
                        }
                    }

                    if (!puedeCursar)
                    {
                        lista.Remove(materia);
                        break;
                    }
                }
            }

            foreach (var materia in materiasAExcluir)
            {
                lista.RemoveAll(x => x.Id == materia.Id);
            }

            #endregion

            dgvMaterias.DataSource = lista
                                     .OrderBy(x => x.Carrera.Id)
                                     .ThenBy(x => x.Año)
                                     .ThenBy(x => x.Cuatrimestre).ToList();

            dgvMaterias.DataBind();

            divSinRegistros.Visible = lista.Count == 0;
        }