public async Task <IActionResult> IndexFilter([Bind("NomeSearch,Page,RequerentesPerPage")] RequerentesSearchViewModel search) { int skipNum = (search.Page - 1) * search.RequerentesPerPage; // Recolher os serviços por página do cookie int rPP = CookieAPI.GetAsInt32(Request, "RequerentesPerPage") ?? _rPP; // Caso o utilizador tenha alterado os serviços por página, alterar a variável global e guardar // o novo valor no cookie if (search.RequerentesPerPage != rPP) { rPP = search.RequerentesPerPage; CookieAPI.Set(Response, "RequerentesPerPage", rPP.ToString()); } // Query de todos os requerentes IQueryable <Requerente> requerentes = _context.Requerentes.AsQueryable().OrderBy(r => r.Nome); if (!String.IsNullOrEmpty(search.NomeSearch)) { requerentes = requerentes.Where(r => r.Nome.Contains(search.NomeSearch)).OrderBy(r => r.Nome); } requerentes = requerentes.Include(r => r.Servicos).Skip(skipNum); RequerentesViewModels response = new RequerentesViewModels { Requerentes = await requerentes.Take(rPP).ToListAsync(), FirstPage = (search.Page == 1), LastPage = (requerentes.Count() <= rPP), PageNum = search.Page }; return(PartialView("PartialViews/_IndexCards", response)); }
// GET: Partilhaveis public async Task <IActionResult> Details(string ID, string Password) { if (String.IsNullOrEmpty(ID) || String.IsNullOrEmpty(Password)) { return(NotFound()); } var partilhavel = await _context.Partilhaveis .Include(p => p.Servico) .Include(p => p.Partilhaveis_Fotografias).ThenInclude(pf => pf.Fotografia) .Where(p => p.ID.Equals(ID)) .FirstOrDefaultAsync(); if (partilhavel == null) { return(NotFound()); } if (partilhavel.Validade != null) { if (DateTime.Compare((DateTime)partilhavel.Validade, DateTime.Now) < 0) { return(NotFound()); } } if (!partilhavel.Password.Equals(Password)) { ModelState.AddModelError("Password", "Password errada."); return(View("PasswordForm", new PartilhavelDetailsViewModel() { Partilhavel = partilhavel })); } // Guardar a password no cookie do cliente para que este não necessita de a introduzir novamente // quando aceder ao partilhavel. CookieAPI.Set(Response, key: "PartilhavelPass", value: Password); return(View("Details", partilhavel)); }
public async Task <IActionResult> IndexFilter([Bind("NomeSearch,DateMin,DateMax,ServicoID,Metadados,Ordem,Page,GaleriasPerPage")] GaleriasSearchViewModel search) { int skipNum = (search.Page - 1) * search.GaleriasPerPage; // Recolher os serviços por página do cookie int galPP = CookieAPI.GetAsInt32(Request, "GaleriasPerPage") ?? _galPP; // Caso o utilizador tenha alterado os serviços por página, alterar a variável global e guardar // o novo valor no cookie if (search.GaleriasPerPage != galPP) { galPP = search.GaleriasPerPage; CookieAPI.Set(Response, "GaleriasPerPage", galPP.ToString()); } // Query de todos os serviços IQueryable <Galeria> galerias = _context.Galerias.Select(g => g); // Caso exista pesquisa por nome if (!String.IsNullOrEmpty(search.NomeSearch)) { galerias = galerias.Where(s => s.Nome.Contains(search.NomeSearch)); } // Caso exista pesquisa por servico if (!String.IsNullOrEmpty(search.ServicoID)) { galerias = galerias.Where(g => g.ServicoFK.Equals(search.ServicoID)); } // Caso exista pesquisa por data min if (search.DateMin != null) { galerias = galerias.Where(s => s.DataDeCriacao >= search.DateMin); } // Caso exista pesquisa por data max if (search.DateMax != null) { galerias = galerias.Where(s => s.DataDeCriacao <= search.DateMax); } // Caso exista metadados if (!String.IsNullOrEmpty(search.Metadados)) { foreach (string metaID in search.Metadados.Split(",")) { var galeriasList = _context.Galerias_Metadados.Where(st => st.MetadadoFK == Int32.Parse(metaID)).Select(st => st.GaleriaFK).ToList(); galerias = galerias.Where(s => galeriasList.Contains(s.ID)); } } if (!String.IsNullOrEmpty(search.Ordem)) { switch (search.Ordem) { case "data": galerias = galerias.OrderByDescending(s => s.DataDeCriacao); break; case "nome": galerias = galerias.OrderBy(s => s.Nome); break; default: galerias = galerias.OrderByDescending(s => s.DataDeCriacao); break; } } else { galerias = galerias.OrderByDescending(s => s.DataDeCriacao); } // Incluir as tabelas associadas e saltar o numero de galeria referentes à página galerias = galerias.Include(g => g.Fotografias) .Include(g => g.Servico) .Include(g => g.Galerias_Metadados).ThenInclude(gmt => gmt.Metadado) .Skip(skipNum); int totalGalerias = galerias.Count(); galerias = galerias.Take(galPP); // Pegar apenas o número de galerias por página definido pelo utilizador // Refrescar as capas das galerias await RefreshCoverImages(await galerias.ToListAsync()); GaleriasIndexViewModel response = new GaleriasIndexViewModel { Galerias = await galerias.ToListAsync(), FirstPage = (search.Page == 1), LastPage = (totalGalerias <= galPP), PageNum = search.Page }; return(PartialView("PartialViews/_IndexCards", response)); }
public async Task <IActionResult> IndexFilter([Bind("NomeSearch,DateMin,DateMax,Requerente,Obra,Tipos,ServSolicitados,Ordem,Page,ServicosPerPage")] ServicosSearchViewModel search) { int skipNum = (search.Page - 1) * search.ServicosPerPage; // Recolher os serviços por página do cookie int servPP = CookieAPI.GetAsInt32(Request, "ServicosPerPage") ?? _serPP; // Caso o utilizador tenha alterado os serviços por página, alterar a variável global e guardar // o novo valor no cookie if (search.ServicosPerPage != servPP) { servPP = search.ServicosPerPage; CookieAPI.Set(Response, "ServicosPerPage", servPP.ToString()); } // Query de todos os serviços IQueryable <Servico> servicos = _context.Servicos; // Caso exista pesquisa por nome if (!String.IsNullOrEmpty(search.NomeSearch)) { servicos = servicos.Where(s => s.Nome.Contains(search.NomeSearch)); } // Caso exista pesquisa por Requerente if (!String.IsNullOrEmpty(search.Requerente)) { servicos = servicos.Where(s => s.Requerente.Nome.Contains(search.Requerente)); } // Caso exista pesquisa por identificação/obra if (!String.IsNullOrEmpty(search.Obra)) { servicos = servicos.Where(s => s.IdentificacaoObra.Contains(search.Obra)); } // Caso exista pesquisa por data min if (search.DateMin != null) { servicos = servicos.Where(s => s.DataDeCriacao >= search.DateMin); } // Caso exista pesquisa por data max if (search.DateMax != null) { servicos = servicos.Where(s => s.DataDeCriacao <= search.DateMax); } // Caso exista tipos if (!String.IsNullOrEmpty(search.Tipos)) { foreach (string tipoID in search.Tipos.Split(",")) { var serTipo = _context.Servicos_Tipos.Where(st => st.TipoFK == Int32.Parse(tipoID)).Select(st => st.ServicoFK).ToList(); servicos = servicos.Where(s => serTipo.Contains(s.ID)); } } // Caso exista tipos if (!String.IsNullOrEmpty(search.ServSolicitados)) { foreach (string servSolicID in search.ServSolicitados.Split(",")) { var serSerSolic = _context.Servicos_ServicosSolicitados.Where(st => st.ServicoSolicitadoFK == Int32.Parse(servSolicID)).Select(st => st.ServicoFK).ToList(); servicos = servicos.Where(s => serSerSolic.Contains(s.ID)); } } if (!String.IsNullOrEmpty(search.Ordem)) { switch (search.Ordem) { case "data": servicos = servicos.OrderByDescending(s => s.DataDeCriacao); break; case "nome": servicos = servicos.OrderBy(s => s.Nome); break; default: servicos = servicos.OrderByDescending(s => s.DataDeCriacao); break; } } else { servicos = servicos.OrderByDescending(s => s.DataDeCriacao); } servicos = servicos .Include(s => s.Requerente) .Include(s => s.Galerias) .Include(s => s.Servicos_Tipos).ThenInclude(st => st.Tipo) .Include(s => s.Servicos_ServicosSolicitados).ThenInclude(sss => sss.ServicoSolicitado) .Include(s => s.Servicos_DataExecucao).ThenInclude(sde => sde.DataExecucao) .Skip(skipNum); ServicosIndexViewModel response = new ServicosIndexViewModel { Servicos = await servicos.Take(servPP).ToListAsync(), FirstPage = (search.Page == 1), LastPage = (servicos.Count() <= servPP), PageNum = search.Page }; return(PartialView("PartialViews/_IndexCards", 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)); }