public IActionResult Get(UrlResourceParameter urlResourceParameter) { var urls = _urlShortenerRepository.FindAll(urlResourceParameter); var paginationMetaData = new { totalCount = urls.TotalCount, pageSize = urls.PageSize, currentPage = urls.CurrentPage, totalPages = urls.TotalPages }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationMetaData)); var urlDtos = urls.Select(u => new ShortenedUrlDto(_options.Domain) { Id = u.Id, Url = u.Url, CreationDate = u.CreationDate, Clicks = u.Clicks, LastVisit = u.LastVisit }); return(Ok(urlDtos)); }
public PageList <ShortenedUrlEntity> FindAll(UrlResourceParameter urlResourceParameter) { var urls = _urlShortenerContext.ShortenedUrls. OrderByDescending(u => u.CreationDate); return(PageList <ShortenedUrlEntity> .Create(urls, urlResourceParameter.PageNumber, urlResourceParameter.PageSize)); }
public async Task <IActionResult> Index(UrlResourceParameter urlResourceParameter) { HttpResponseMessage response; using (var client = new HttpClient()) { var query = $"{_api.ApiEndPoint}/?PageNumber={urlResourceParameter.PageNumber}&pageSize={urlResourceParameter.PageSize}"; response = await client.GetAsync(query); } if (!response.IsSuccessStatusCode) { ModelState.AddModelError("", response.ReasonPhrase); } var content = await response.Content.ReadAsStringAsync(); var shUrlList = JsonConvert.DeserializeObject <List <ShortenedUrlDto> >(content); ViewData["shUrlList"] = shUrlList; var pagination = response.Headers.GetValues("X-Pagination"); var pagJson = JsonConvert.DeserializeObject <Dictionary <string, string> >(pagination.FirstOrDefault()); pagJson.Add("nextPage", int.Parse(pagJson["currentPage"]) < int.Parse(pagJson["totalPages"]) ? $"{int.Parse(pagJson["currentPage"]) + 1}" : "#"); pagJson.Add("previousPage", int.Parse(pagJson["currentPage"]) > 1 ? $"{int.Parse(pagJson["currentPage"]) - 1}" : "#"); ViewData["pagination"] = pagJson; return(View()); }