public Uri GetAllPostUri(string specificUrl, AnimalPaginationQuery pagination, AnimalQuery query) { var stringHelper = _baseUri; _baseUri += specificUrl; var uri = new Uri(_baseUri); var modifiedUrl = _baseUri; if (!string.IsNullOrWhiteSpace(query.Weight)) { modifiedUrl = QueryHelpers.AddQueryString(modifiedUrl, "weight", query.Weight); } if (!string.IsNullOrWhiteSpace(query.IsNew)) { modifiedUrl = QueryHelpers.AddQueryString(modifiedUrl, "isNew", query.IsNew); } if (!string.IsNullOrWhiteSpace(query.IsDisabled)) { modifiedUrl = QueryHelpers.AddQueryString(modifiedUrl, "isDisabled", query.IsDisabled); } if (!string.IsNullOrWhiteSpace(query.Gender)) { modifiedUrl = QueryHelpers.AddQueryString(modifiedUrl, "gender", query.Gender); } if (!string.IsNullOrWhiteSpace(query.Category)) { modifiedUrl = QueryHelpers.AddQueryString(modifiedUrl, "category", query.Category); } if (!string.IsNullOrWhiteSpace(query.DateOfBirth)) { modifiedUrl = QueryHelpers.AddQueryString(modifiedUrl, "dateOfBirth", query.DateOfBirth); } 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, AnimalPaginationQuery paginationQuery, ICollection <T> response, ICollection <K> allAnimals, string specificUrl, AnimalQuery query) { var totalPages = Math.Ceiling((double)allAnimals.Count / paginationQuery.PageSize); var nextPage = (paginationQuery.PageNumber >= 1 && paginationQuery.PageNumber < totalPages) ? uriService.GetAllPostUri(specificUrl, new AnimalPaginationQuery() { PageNumber = paginationQuery.PageNumber + 1, PageSize = paginationQuery.PageSize }, query).ToString() : null; var previousPage = paginationQuery.PageNumber - 1 >= 1 ? uriService.GetAllPostUri(specificUrl, new AnimalPaginationQuery() { 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); }