Ejemplo n.º 1
0
        // 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);
        }