コード例 #1
0
        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));
        }
コード例 #2
0
        /// <summary>
        /// Retorna a listagem das galerias. Caso tenha sido passado um Id de serviço, lista apenas as galerias do Serviço.
        /// </summary>
        /// <param name="servicoId">Id do Serviço.</param>
        /// <returns>PartialView com a listagem de galerias.</returns>
        public async Task <IActionResult> InitialGaleria(string servicoId)
        {
            var galerias = _context.Galerias.Include(g => g.Fotografias).Include(g => g.Servico).Select(g => g);

            // Recolher as galerias por página do cookie
            int galPP = CookieAPI.GetAsInt32(Request, "GaleriasPerPage") ?? _galPP;

            if (!String.IsNullOrEmpty(servicoId))
            {
                galerias = galerias.Where(g => g.ServicoFK.Equals(servicoId));
            }

            int totalGalerias = galerias.Count();

            galerias = galerias
                       .OrderByDescending(g => g.DataDeCriacao)
                       .Take(galPP)
                       .Include(g => g.Fotografias)
                       .Include(g => g.Galerias_Metadados).ThenInclude(mt => mt.Metadado);

            // Refrescar as capas das galerias
            await RefreshCoverImages(await galerias.ToListAsync());

            GaleriasIndexViewModel response = new GaleriasIndexViewModel
            {
                Galerias  = await galerias.ToListAsync(),
                FirstPage = true,
                LastPage  = (totalGalerias <= galPP),
                PageNum   = 1
            };

            return(PartialView("PartialViews/_IndexCards", response));
        }
コード例 #3
0
        // GET: Servicos
        public async Task <IActionResult> Index(int?page = 1)
        {
            // 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 serviços por página do cookie
            int servPP = CookieAPI.GetAsInt32(Request, "ServicosPerPage") ?? _serPP;

            var servicos = _context.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)
                           .OrderByDescending(s => s.DataDeCriacao);

            ServicosIndexViewModel response = new ServicosIndexViewModel
            {
                Servicos  = await servicos.Take(servPP).ToListAsync(),
                FirstPage = true,
                LastPage  = (servicos.Count() <= servPP),
                PageNum   = 1
            };

            ViewData["servPP"] = servPP;

            return(View(response));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        // GET: Requerentes
        public async Task <IActionResult> Index(int?page = 1)
        {
            // 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";
            }

            var requerentes = _context.Requerentes.Include(r => r.Servicos)
                              .OrderBy(r => r.Nome);

            // Recolher as galerias por página do cookie
            int rPP = CookieAPI.GetAsInt32(Request, "RequerentesPerPage") ?? _rPP;

            ViewData["rPP"] = rPP;

            RequerentesViewModels response = new RequerentesViewModels
            {
                Requerentes = await requerentes.Take(rPP).ToListAsync(),
                FirstPage   = true,
                LastPage    = (requerentes.Count() <= rPP),
                PageNum     = 1
            };

            return(View(response));
        }
コード例 #6
0
        public async Task <IActionResult> Details(string id)
        {
            if (String.IsNullOrEmpty(id))
            {
                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 (User.Identity.IsAuthenticated)
            {
                // 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";
                }

                return(View("Details", partilhavel));
            }

            if (partilhavel.Validade != null)
            {
                if (DateTime.Compare((DateTime)partilhavel.Validade, DateTime.Now) < 0)
                {
                    return(View("Expired"));
                }
            }

            // Caso o utilizador já tenha acedido ao partilhavel, é guardada a password em cookie.
            // Caso utilizador já tenha a cookie da password, permitir que este tenha acesso ao partilhavel
            // Caso não tenha a pass no cookie, mostra o formulario de password
            if (CookieAPI.Get(Request, key: "PartilhavelPass")?.Equals(partilhavel.Password) ?? false)
            {
                return(View("Details", partilhavel));
            }
            else
            {
                return(View("PasswordForm", new PartilhavelDetailsViewModel()
                {
                    Partilhavel = partilhavel
                }));
            }
        }
コード例 #7
0
        // GET: Galerias
        public IActionResult Index(string serv)
        {
            // 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"];
            }

            // Recolher as galerias por página do cookie
            int galPP = CookieAPI.GetAsInt32(Request, "GaleriasPerPage") ?? _galPP;

            ViewData["galPP"] = galPP;
            ViewData["serv"]  = serv;

            return(View(new GaleriasOfServiceViewModel {
                ServicoID = serv
            }));
        }
コード例 #8
0
        // 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));
        }
コード例 #9
0
        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));
        }
コード例 #10
0
        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));
        }
コード例 #11
0
        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));
        }