public Uri GetAllPostUri(string specificUrl, ArticlePaginationQuery pagination, ArticleQuery query) { var stringHelper = _baseUri; _baseUri += specificUrl; var uri = new Uri(_baseUri); var modifiedUrl = _baseUri; if (!string.IsNullOrWhiteSpace(query.TitleOrContent)) { modifiedUrl = QueryHelpers.AddQueryString(modifiedUrl, "titleOrContent", query.TitleOrContent); } if (!string.IsNullOrWhiteSpace(query.Tag)) { modifiedUrl = QueryHelpers.AddQueryString(modifiedUrl, "tag", query.Tag); } if (pagination == null) { return(uri); } modifiedUrl = QueryHelpers.AddQueryString(modifiedUrl, "pageNumber", pagination.PageNumber.ToString()); modifiedUrl = QueryHelpers.AddQueryString(modifiedUrl, "pageSize", pagination.PageSize.ToString()); _baseUri = stringHelper; return(new Uri(modifiedUrl)); }
public static Pagination <T> CreatePaginatedResponse <T, K>(IUriService uriService, ArticlePaginationQuery paginationQuery, ICollection <T> response, ICollection <K> allArticles, string specificUrl, ArticleQuery query) { var totalPages = Math.Ceiling((double)allArticles.Count / paginationQuery.PageSize); var nextPage = (paginationQuery.PageNumber >= 1 && paginationQuery.PageNumber < totalPages) ? uriService.GetAllPostUri(specificUrl, new ArticlePaginationQuery() { PageNumber = paginationQuery.PageNumber + 1, PageSize = paginationQuery.PageSize }, query).ToString() : null; var previousPage = paginationQuery.PageNumber - 1 >= 1 ? uriService.GetAllPostUri(specificUrl, new ArticlePaginationQuery() { PageNumber = paginationQuery.PageNumber - 1, PageSize = paginationQuery.PageSize }, query).ToString() : null; var paginationResponse = new Pagination <T> { Data = response.AsEnumerable(), PageNumber = paginationQuery.PageNumber >= 1 ? paginationQuery.PageNumber : (int?)null, PageSize = paginationQuery.PageSize >= 1 ? paginationQuery.PageSize : (int?)null, NextPage = response.Any() ? nextPage : null, PreviousPage = previousPage, TotalPages = totalPages }; return(paginationResponse); }