コード例 #1
0
ファイル: UriService.cs プロジェクト: yakubovych/PetUA
        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));
        }
コード例 #2
0
ファイル: PaginationHelper.cs プロジェクト: yakubovych/PetUA
        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);
        }