public IActionResult Index([FromQuery] UrlQuery urlQuery)
        {
            var item = _phoebusService.PhQueryPag(urlQuery);

            if (item.Results.Count == 0)
            {
                return(NotFound());
            }

            ListPaginacao <PhoebusDTO> lista = CreateLinksPhoebus(urlQuery, item);

            return(Ok(lista));
        }
Beispiel #2
0
        public ListPaginacao <Intermeio> QueryPag(UrlQuery urlQuery)
        {
            var lstPaginacao = new ListPaginacao <Intermeio>();
            var phQuery      = _IntRepository.GetAll().AsQueryable();


            if (urlQuery.PagNumero.HasValue)
            {
                var qntRegistro = phQuery.Count();
                phQuery = phQuery.Skip((urlQuery.PagNumero.Value - 1) * urlQuery.PagRegistro.Value).Take(urlQuery.PagRegistro.Value);

                var paginacao = new Paginacao();
                paginacao.NumeroPagina      = urlQuery.PagNumero.Value;
                paginacao.RegistroPorPagina = urlQuery.PagRegistro.Value;
                paginacao.TotalRegistro     = qntRegistro;
                paginacao.TotalPaginas      = (int)Math.Ceiling((double)qntRegistro / urlQuery.PagRegistro.Value);

                lstPaginacao.Paginacao = paginacao;
            }
            lstPaginacao.Results.AddRange(phQuery.ToList());

            return(lstPaginacao);
        }
        private ListPaginacao <AnaliseDTO> CreateLinksAnalise(UrlQuery urlQuery, ListPaginacao <Analise> item)
        {
            var lista = _mapper.Map <ListPaginacao <Analise>, ListPaginacao <AnaliseDTO> >(item);


            foreach (var ph in lista.Results)
            {
                ph.Links = new List <LinkDTO>();
                ph.Links.Add(new LinkDTO("self", Url.Link("GetId", new { id = ph.PhoebusId }), "GET"));
            }

            lista.Links.Add(new LinkDTO("self", Url.Link("Index", urlQuery), "GET"));

            if (item.Paginacao != null)
            {
                Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(item.Paginacao));

                if (urlQuery.PagNumero + 1 <= item.Paginacao.TotalPaginas)
                {
                    var queryString = new UrlQuery()
                    {
                        PagNumero = urlQuery.PagNumero + 1, PagRegistro = urlQuery.PagRegistro
                    };
                    lista.Links.Add(new LinkDTO("next", Url.Link("Index", queryString), "GET"));
                }

                if (urlQuery.PagNumero - 1 > 0)
                {
                    var queryString = new UrlQuery()
                    {
                        PagNumero = urlQuery.PagNumero - 1, PagRegistro = urlQuery.PagRegistro
                    };
                    lista.Links.Add(new LinkDTO("prev", Url.Link("Index", queryString), "GET"));
                }
            }
            return(lista);
        }