// Para el filtro por cursos /// <summary> /// Retorna la lista de cursos que pueden ser elegidos en el filtro de cursos. /// </summary> /// <param name="anno">Año del ciclo en los que se imparten los cursos.</param> /// <param name="semestre">Semestre del ciclo en el que se imparten los cursos.</param> /// <param name="codigoUnidadAcadem">Código de la unidad academica a la que pertenecen los cursos.</param> /// <param name="siglaCarrera">Sigla de la carrera en la que se encuentran los cursos.</param> /// <param name="numEnfasis">Número del énfasis de la carrera en el que se encuentran los cursos.</param> /// <returns>Lista de los cursos que satisfacen los filtros utilizados como parámetros.</returns> public IQueryable <Curso> ObtenerCursos(short?anno, byte?semestre, String codigoUnidadAcadem, String siglaCarrera, byte?numEnfasis) { IQueryable <Curso> nombreCurso = from c in db.Curso select c; List <Curso> cursos = new List <Curso>(); if (semestre != null) { List <Curso> cursosSemestre = new List <Curso>(); Opiniometro_DatosEntities opi = new Opiniometro_DatosEntities(); var cur = opi.CursosSegunSemestre(semestre); foreach (var c in cur) { Curso nuevo = new Curso(); nuevo.CodigoUnidad = c.CodigoUnidad; nuevo.Tipo = c.Tipo; nuevo.Sigla = c.Sigla; nuevo.Nombre = c.Nombre; cursosSemestre.Add(nuevo); } cursos = cursosSemestre; nombreCurso = cursos.AsQueryable(); } if (anno != null) { List <Curso> cursosAnno = new List <Curso>(); Opiniometro_DatosEntities opi = new Opiniometro_DatosEntities(); var cur = opi.CursosSegunAnno(anno); if (semestre == null) { foreach (var c in cur) { Curso nuevo = new Curso(); nuevo.CodigoUnidad = c.CodigoUnidad; nuevo.Tipo = c.Tipo; nuevo.Sigla = c.Sigla; nuevo.Nombre = c.Nombre; cursosAnno.Add(nuevo); } } //Si ya se seleccionó algún otro filtro, se restringe la lista de cursos de acuerdo al mismo else { foreach (var c in cur) { Curso nuevo = new Curso(); nuevo = cursos.Find(cu => cu.Sigla.Equals(c.Sigla)); if (nuevo != null) { cursosAnno.Add(nuevo); } } } cursos = cursosAnno; nombreCurso = cursos.AsQueryable(); } if (!String.IsNullOrEmpty(codigoUnidadAcadem)) { if (semestre == null && anno == null) { var uni = from c in db.Curso where c.CodigoUnidad.Equals(codigoUnidadAcadem) select c; cursos = uni.ToList(); } //Si ya se seleccionó algún otro filtro, se restringe la lista de cursos de acuerdo al mismo else { cursos = cursos.Where(c => c.CodigoUnidad.Equals(codigoUnidadAcadem)).ToList(); } nombreCurso = cursos.AsQueryable(); } if (!String.IsNullOrEmpty(siglaCarrera)) { List <Curso> cursosCarrera = new List <Curso>(); Opiniometro_DatosEntities opi = new Opiniometro_DatosEntities(); var cur = opi.CursosSegunCarrera(siglaCarrera); if (semestre == null && anno == null && String.IsNullOrEmpty(codigoUnidadAcadem)) { foreach (var c in cur) { Curso nuevo = new Curso(); nuevo.CodigoUnidad = c.CodigoUnidad; nuevo.Tipo = c.Tipo; nuevo.Sigla = c.Sigla; nuevo.Nombre = c.Nombre; cursosCarrera.Add(nuevo); } } //Si ya se seleccionó algún otro filtro, se restringe la lista de cursos de acuerdo al mismo else { foreach (var c in cur) { Curso nuevo = new Curso(); nuevo = cursos.Find(cu => cu.Sigla.Equals(c.Sigla)); if (nuevo != null) { cursosCarrera.Add(nuevo); } } } cursos = cursosCarrera; nombreCurso = cursos.AsQueryable(); } ViewBag.nombreCurso = new SelectList(nombreCurso, "Nombre", "Nombre"); return(nombreCurso); }