public IActionResult GetAll([FromQuery] WordQueryUrl query) { var item = _repository.GetAll(query); if (item.Results.Count == 0) { return(StatusCode(404)); } PaginationList <WordDTO> List = CreateLinksListWordDTO(query, item); return(Ok(List)); }
private PaginationList <WordDTO> CreateLinksListWordDTO(WordQueryUrl query, PaginationList <Word> item) { var List = _mapper.Map <PaginationList <Word>, PaginationList <WordDTO> >(item); foreach (var word in List.Results) { word.Links.Add(new LinkDTO("self", Url.Link("GetWord", new { id = word.Id }), "GET")); } List.Links.Add(new LinkDTO("self", Url.Link("GetAll", query), "GET")); if (item.Pagination != null) { Response.Headers.Add("x-pagination", JsonConvert.SerializeObject(item.Pagination)); if (query.NumPage + 1 <= item.Pagination.TotalPages) { var queryString = new WordQueryUrl() { NumPage = query.NumPage + 1, NumRecordsPage = query.NumRecordsPage, Date = query.Date }; List.Links.Add(new LinkDTO("next", Url.Link("GetAll", queryString), "GET")); } if (query.NumPage - 1 > 0) { var queryString = new WordQueryUrl() { NumPage = query.NumPage - 1, NumRecordsPage = query.NumRecordsPage, Date = query.Date }; List.Links.Add(new LinkDTO("Prev", Url.Link("GetAll", queryString), "GET")); } } return(List); }