// GET: Cursos
        public async Task <IActionResult> Index(int?id, int?alumnoId)
        {
            var ViewModel = new CursoIndexData();

            ViewModel.Cursos = await _context.Cursos
                               .Include(p => p.Profesor)
                               .ThenInclude(p => p.Direccion)
                               .Include(p => p.Alumnos_X_Cursos)
                               .ThenInclude(p => p.Alumno)
                               .ThenInclude(p => p.Direccion)
                               .AsNoTracking()
                               .OrderBy(p => p.Nombre)
                               .ToListAsync();

            //var cursos = _context.Cursos.Include(c=>c.Profesor).AsNoTracking();

            if (id != null)
            {
                ViewData["CursoId"] = id.Value;
                Curso curso = ViewModel.Cursos.Where(c => c.CursoId == id.Value).Single();
                ViewModel.Alumnos = curso.Alumnos_X_Cursos.Select(s => s.Alumno);
            }

            if (alumnoId != null)
            {
                ViewData["AlumnoId"]    = alumnoId.Value;
                ViewModel.AlumnosCursos = ViewModel.Alumnos.Where(a => a.AlumnoId == alumnoId).Single().Alumnos_X_Cursos;
            }

            return(View(ViewModel /*await _context.Cursos.ToListAsync()*/));
        }
Exemplo n.º 2
0
        // GET: Cursos
        public async Task <IActionResult> Index(string sortOrder, string cadenaBusqueda)
        {
            ViewData["NombreSortOrder"]        = String.IsNullOrEmpty(sortOrder) ? "nombre_desc" : "";
            ViewData["PrecioMensualSortOrder"] = sortOrder == "PrecioMensual" ? "precio_desc" : "PrecioMensual";
            ViewData["DescripcionSortOrder"]   = sortOrder == "Descripcion" ? "descrip_desc" : "Descripcion";
            ViewData["ProfesorSortOrder"]      = sortOrder == "Profesor" ? "prof_desc" : "Profesor";
            ViewData["FiltroActual"]           = cadenaBusqueda;
            var vistaModelo = new CursoIndexData();

            vistaModelo.Cursos = await _context.Cursos
                                 .Include(p => p.Profesor)
                                 .ThenInclude(p => p.Direccion)
                                 .Include(p => p.Alumnos_X_Cursos)
                                 .ThenInclude(p => p.Alumno)
                                 .ThenInclude(p => p.Direccion)
                                 .AsNoTracking()
                                 .OrderBy(p => p.Nombre)
                                 .ToListAsync();

            if (!String.IsNullOrEmpty(cadenaBusqueda))
            {
                vistaModelo.Cursos = vistaModelo.Cursos.Where(c => c.Nombre.Contains(cadenaBusqueda));
            }
            switch (sortOrder)
            {
            case "nombre_desc":
                vistaModelo.Cursos = vistaModelo.Cursos.OrderByDescending(c => c.Nombre);
                break;

            case "PrecioMensual":
                vistaModelo.Cursos = vistaModelo.Cursos.OrderBy(c => c.PrecioMensual);
                break;

            case "precio_desc":
                vistaModelo.Cursos = vistaModelo.Cursos.OrderByDescending(c => c.PrecioMensual);
                break;

            case "Descripcion":
                vistaModelo.Cursos = vistaModelo.Cursos.OrderBy(c => c.Descripcion);
                break;

            case "descrip_desc":
                vistaModelo.Cursos = vistaModelo.Cursos.OrderByDescending(c => c.Descripcion);
                break;

            case "Profesor":
                vistaModelo.Cursos = vistaModelo.Cursos.OrderBy(c => c.Profesor.Apellido);
                break;

            case "prof_desc":
                vistaModelo.Cursos = vistaModelo.Cursos.OrderByDescending(c => c.Profesor.Apellido);
                break;

            default:
                vistaModelo.Cursos = vistaModelo.Cursos.OrderBy(c => c.Nombre);
                break;
            }
            return(View(vistaModelo));
        }