public async Task <IActionResult> Index() { // Fornecer feedback ao cliente caso este exista. // Este feedback é fornecido na view a partir de uma notificação 'Noty' if (TempData["Feedback"] != null) { ViewData["Feedback"] = TempData["Feedback"]; ViewData["Type"] = TempData["Type"] ?? "success"; } // Recolher os partilhaveis por página do cookie int partPP = CookieAPI.GetAsInt32(Request, "PartilhaveisPerPage") ?? _partPP; var partilhaveis = _context.Partilhaveis.Include(p => p.Servico).OrderByDescending(p => p.DataDeCriacao); PartilhavelIndexViewModel response = new PartilhavelIndexViewModel { Partilhaveis = await partilhaveis.Take(partPP).ToListAsync(), FirstPage = true, LastPage = (partilhaveis.Count() <= partPP), PageNum = 1 }; ViewData["partPP"] = partPP; return(View(response)); }
public async Task <IActionResult> IndexFilter([Bind("NomeSearch,ServicoId,Validade,Ordem,Page,PartilhaveisPerPage")] PartilhavelSearchViewModel search) { int skipNum = (search.Page - 1) * search.PartilhaveisPerPage; // Recolher os partilhaveis por página do cookie int partPP = CookieAPI.GetAsInt32(Request, "PartilhaveisPerPage") ?? _partPP; // Caso o utilizador tenha alterado os partilhaveis por página, alterar a variável e guardar // o novo valor no cookie if (search.PartilhaveisPerPage != partPP) { partPP = search.PartilhaveisPerPage; CookieAPI.Set(Response, "PartilhaveisPerPage", partPP.ToString()); } // Query de todos os serviços IQueryable <Partilhavel> partilhaveis = _context.Partilhaveis; // Caso exista pesquisa por nome if (!String.IsNullOrEmpty(search.NomeSearch)) { partilhaveis = partilhaveis.Where(p => p.Nome.Contains(search.NomeSearch)); } // Caso exista pesquisa por servicço if (!String.IsNullOrEmpty(search.ServicoId)) { partilhaveis = partilhaveis.Where(p => p.ServicoFK.Equals(search.ServicoId)); } switch (search.Validade) { case "valido": partilhaveis = partilhaveis.Where(p => p.Validade == null || DateTime.Compare((DateTime)p.Validade, DateTime.Now) > 0); break; case "expirado": partilhaveis = partilhaveis.Where(p => p.Validade != null && DateTime.Compare((DateTime)p.Validade, DateTime.Now) < 0); break; default: break; } switch (search.Ordem) { case "nome": partilhaveis = partilhaveis.OrderBy(p => p.Nome); break; default: partilhaveis = partilhaveis.OrderByDescending(p => p.DataDeCriacao); break; } partilhaveis = partilhaveis.Include(p => p.Servico).Skip(skipNum); PartilhavelIndexViewModel response = new PartilhavelIndexViewModel { Partilhaveis = await partilhaveis.Take(partPP).ToListAsync(), FirstPage = (search.Page == 1), LastPage = (partilhaveis.Count() <= partPP), PageNum = search.Page }; return(PartialView("PartialViews/_IndexCards", response)); }