public ActionResult PreguntasManager(int?id, int?respuestaID) { var viewModel = new PreguntasManager(); viewModel.preguntas = db.Pregunta .Include(i => i.Categoria); return(View(viewModel)); }
public ActionResult Inicio(string categoria, string buscar, string ordenar, int pagina = 1) { ViewBag.NameSortParam = String.IsNullOrEmpty(ordenar); var viewModel = new PreguntasManager(); var pregBase = (from c in db.Pregunta .Include(i => i.Categoria) .Include(i => i.Usuario) .Include(i => i.Respuestas) select c).ToList(); if (categoria != null) //Si escoge categoría { var cantidadRegistrosPorPagina = 10; var totalRegistros = db.Pregunta.Count(); var NombreCategoria = categoria; var registros = (from c in pregBase where c.Categoria.NombreCategoria == categoria select c).ToList(); var registrosCategoria = registros.Count(); viewModel.RegistrosCategoria = registrosCategoria; viewModel.preguntas = registros.OrderBy(x => x.Fechapregunta) .Skip((pagina - 1) * cantidadRegistrosPorPagina) .Take(cantidadRegistrosPorPagina); var totalpaginas = (int)Math.Ceiling((double)totalRegistros / cantidadRegistrosPorPagina); viewModel.PaginaActual = pagina; viewModel.TotalRegistros = registrosCategoria; viewModel.TotalPaginas = totalpaginas; viewModel.RegistrosPorPagina = cantidadRegistrosPorPagina; ViewData["categoria"] = categoria; } else//Inicio todas las categorias { var cantidadRegistrosPorPagina = 20; var totalRegistros = db.Pregunta.Count(); var NombreCategoria = categoria; viewModel.preguntas = pregBase.OrderBy(x => Guid.NewGuid()) .Skip((pagina - 1) * cantidadRegistrosPorPagina) .Take(cantidadRegistrosPorPagina); var totalpaginas = (int)Math.Ceiling((double)totalRegistros / cantidadRegistrosPorPagina); viewModel.PaginaActual = pagina; viewModel.TotalRegistros = totalRegistros; viewModel.TotalPaginas = totalpaginas; viewModel.RegistrosPorPagina = cantidadRegistrosPorPagina; ViewData["categoria"] = "Todas"; } viewModel.categorias = db.Categoria.ToList(); //ViewBag.categorias = (from c in db.Categoria select c).ToList(); switch (ordenar) { case "categoria": viewModel.preguntas = viewModel.preguntas.OrderBy(s => s.Categoria.NombreCategoria); break; case "antiguos": viewModel.preguntas = viewModel.preguntas.OrderBy(s => s.Fechapregunta); break; case "Date": viewModel.preguntas = viewModel.preguntas.OrderByDescending(s => s.Fechapregunta); break; case "titulo": viewModel.preguntas = viewModel.preguntas.OrderBy(s => s.TituloPregunta); break; default: viewModel.preguntas = viewModel.preguntas; break; } using (db) { if (!string.IsNullOrEmpty(buscar)) { if (categoria != null) { foreach (var item in buscar.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)) { viewModel.preguntas = viewModel.preguntas.Where(x => x.Categoria.NombreCategoria.ToString() == categoria && x.TituloPregunta.ToLower().Contains(item.ToLower()) || x.DescPregunta.ToLower().Contains(item.ToLower())).ToList(); } } else //if (!string.IsNullOrEmpty(buscar) ) { foreach (var item in buscar.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)) { viewModel.preguntas = viewModel.preguntas.Where(x => x.TituloPregunta.ToLower().Contains(item.ToLower()) || x.DescPregunta.ToLower().Contains(item.ToLower()) || x.Categoria.NombreCategoria.ToLower().Contains(item.ToLower())) .ToList(); } } } return(View(viewModel)); } }