private ListaPaginacao <PalavraDTO> CriarLinkListaPalavraDTO(PalavraUrlQuery query, ListaPaginacao <Palavra> palavras) { ListaPaginacao <PalavraDTO> lista = _mapper.Map <ListaPaginacao <Palavra>, ListaPaginacao <PalavraDTO> >(palavras); foreach (var palavra in lista.Resultados) { palavra.Links.Add(new LinkDTO("self", Url.Link("ObterPalavra", new { id = palavra.Id }), "GET")); } lista.Links.Add(new LinkDTO("self", Url.Link("ObterTodas", query), "GET")); if (lista.Paginacao != null) { Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(lista.Paginacao)); if (query.NumeroPagina + 1 <= lista.Paginacao.TotalPaginas) { var queryString = new PalavraUrlQuery() { NumeroPagina = query.NumeroPagina + 1, QuantidadeRegistros = query.QuantidadeRegistros, Data = query.Data }; lista.Links.Add(new LinkDTO("next", Url.Link("ObterTodas", queryString), "GET")); } if (query.NumeroPagina - 1 > 0) { var queryString = new PalavraUrlQuery() { NumeroPagina = query.NumeroPagina - 1, QuantidadeRegistros = query.QuantidadeRegistros, Data = query.Data }; lista.Links.Add(new LinkDTO("prev", Url.Link("ObterTodas", queryString), "GET")); } } return(lista); }
private PaginationList <PalavraDTO> CriarLinksListPalavrasDTO(PalavraUrlQuery query, PaginationList <Palavra> items) { var palavras = _mapper.Map <PaginationList <Palavra>, PaginationList <PalavraDTO> >(items); foreach (var item in palavras.Results) { item.Links = new List <LinkDTO>(); //item.Links.Add(new LinkDTO("self", Url.Link("MimicRoute", new { id = item.Id }), "GET")); item.Links.Add(new LinkDTO("self", Url.ActionLink("Atualizar", "Palavras", new { id = item.Id }), "GET")); item.Links.Add(new LinkDTO("update", Url.ActionLink("Atualizar", "Palavras", new { id = item.Id }), "PUT")); item.Links.Add(new LinkDTO("delete", Url.ActionLink("Deletar", "Palavras", new { id = item.Id }), "DELETE")); } palavras.Links.Add(new LinkDTO("self", Url.Link("MimicRoute", query), "GET")); if (items.Paginacao != null) { Response.Headers.Add("X-Paginator", JsonConvert.SerializeObject(items.Paginacao)); if (query.PagNumero + 1 <= items.Paginacao.TotalPaginas) { var queryString = new PalavraUrlQuery() { PagNumero = query.PagNumero + 1, PagRegistro = query.PagRegistro, Data = query.Data }; palavras.Links.Add(new LinkDTO("next", Url.Link("MimicRoute", queryString), "GET")); } if (query.PagNumero - 1 > 0) { var queryString = new PalavraUrlQuery() { PagNumero = query.PagNumero - 1, PagRegistro = query.PagRegistro, Data = query.Data }; palavras.Links.Add(new LinkDTO("prev", Url.Link("MimicRoute", queryString), "GET")); } } return(palavras); }
public List <Palavra> ObterPalavras(PalavraUrlQuery query) { var item = _banco.Palavras.AsNoTracking().AsQueryable(); if (query.Data.HasValue) { item = item.Where(a => a.Criado > query.Data.Value || a.Atualizado > query.Data.Value); } if (query.PagNumero.HasValue) { var quantidadeTotalRegistros = item.Count(); item = item.Skip((query.PagNumero.Value - 1) * query.PagRegistro.Value).Take(query.PagRegistro.Value); var paginacao = new Paginacao(); paginacao.NumeroPagina = query.PagNumero.Value; paginacao.RegistroPorPagina = query.PagRegistro.Value; paginacao.TotalRegistros = quantidadeTotalRegistros; paginacao.TotalPaginas = (int)Math.Ceiling((double)quantidadeTotalRegistros / query.PagRegistro.Value); } return(item.ToList()); }
private PaginationList <PalavraDTO> CriarLinksListPalavrasDTO(PalavraUrlQuery query, PaginationList <Palavra> item) { var lista = _mapper.Map <PaginationList <Palavra>, PaginationList <PalavraDTO> >(item); foreach (var palavra in lista.Results) { palavra.Links = new List <LinkDTO>(); palavra.Links.Add(new LinkDTO("self", Url.Link("ObterPalavra", new { Id = palavra.Id }), "GET")); } lista.Links.Add(new LinkDTO("self", Url.Link("ObterTodas", query), "GET")); if (item.Paginacao != null) { Response.Headers.Add("X-Registration", JsonConvert.SerializeObject(item.Paginacao)); if (query.PagNumero + 1 <= item.Paginacao.TotalPaginas) { var queryString = new PalavraUrlQuery() { PagNumero = query.PagNumero + 1, PagRegistro = query.PagRegistro, Data = query.Data }; lista.Links.Add(new LinkDTO("next", Url.Link("ObterTodas", queryString), "GET")); } if (query.PagNumero - 1 > 0) { var queryString = new PalavraUrlQuery() { PagNumero = query.PagNumero - 1, PagRegistro = query.PagRegistro, Data = query.Data }; lista.Links.Add(new LinkDTO("next", Url.Link("ObterTodas", queryString), "GET")); } } return(lista); }
//public ActionResult ObterTodas(DateTime? data, int? pagNumero, int? pagRegistro) public ActionResult ObterTodas([FromQuery] PalavraUrlQuery query) { var item = _repository.ObterPalavras(query); if (item.Count == 0) { return(NotFound()); } if (item.Paginacao != null) { Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(item.Paginacao)); } var lista = _mapper.Map <PaginationList <Palavra>, PaginationList <PalavraDTO> >(item); foreach (var palavra in lista) { palavra.Links.Add(new LinkDTO("self", Url.Link("ObterPalavra", new { id = palavra.Id }), "GET")); } return(Ok(item.ToList())); }
/// <summary> /// CriarLinksPalavras Cria o link de paginação no obter todas /// </summary> /// <param name="palavraUrlQuery"></param> /// <param name="item"></param> /// <returns></returns> private PaginacaoLista <PalavraDTO> CriarLinksPalavras(PalavraUrlQuery palavraUrlQuery, PaginacaoLista <Palavra> item) { var palavraLista = _mapper.Map <PaginacaoLista <Palavra>, PaginacaoLista <PalavraDTO> >(item); foreach (var palavra in palavraLista.Resultados) { palavra.Links = new List <LinkDTO>(); palavra.Links.Add(new LinkDTO("self", Url.Link("ObterPalavra", new { id = palavra.Id }), "GET")); } palavraLista.Links.Add(new LinkDTO("self", Url.Link("ObterTodas", palavraUrlQuery), "GET")); if (item.Paginacao != null) { Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(item.Paginacao)); if (palavraUrlQuery.PaginaNumero + 1 <= item.Paginacao.TotalDePagina) { var queryString = new PalavraUrlQuery() { PaginaNumero = palavraUrlQuery.PaginaNumero + 1, RegistroPagina = palavraUrlQuery.RegistroPagina, Data = palavraUrlQuery.Data }; palavraLista.Links.Add(new LinkDTO("prox", Url.Link("ObterTodas", queryString), "GET")); } if (palavraUrlQuery.PaginaNumero - 1 > 0) { var queryString = new PalavraUrlQuery() { PaginaNumero = palavraUrlQuery.PaginaNumero - 1, RegistroPagina = palavraUrlQuery.RegistroPagina, Data = palavraUrlQuery.Data }; palavraLista.Links.Add(new LinkDTO("ant", Url.Link("ObterTodas", queryString), "GET")); } } return(palavraLista); }