public Data()
 {
     Meta         = null;
     Controls     = null;
     ControlsList = null;
     Expressions  = null;
 }
Example #2
0
        public PaginatedListBuilder(Uri baseUri, IQueryable <Q> items, int perPage, int page, Func <Q, T> transform)
        {
            UriBuilder b = new UriBuilder(baseUri);

            b.Query = string.Join("&", b.Query.Split('&').Where(p => !p.Contains("page=")));
            baseUri = b.Uri;
            int total         = items.Count();
            int numberOfPages = total / perPage + (total % perPage > 0 ? 1 : 0);

            Meta = new MetaObj()
            {
                CurrentPage = page,
                From        = (page - 1) * perPage + 1,
                To          = page * perPage - (page == numberOfPages ? perPage - total % perPage : 0),
                LastPage    = numberOfPages,
                PerPage     = perPage,
                Total       = total,
                Path        = baseUri.ToString()
            };

            Links = new LinksObj
            {
                First = new Uri(QueryHelpers.AddQueryString(baseUri.ToString(), "page", "1")),
                Last  = new Uri(QueryHelpers.AddQueryString(baseUri.ToString(), "page", $"{numberOfPages}")),
                Prev  = page == 1 ? null : new Uri(QueryHelpers.AddQueryString(baseUri.ToString(), "page", $"{page - 1}")),
                Next  = page == numberOfPages ? null : new Uri(QueryHelpers.AddQueryString(baseUri.ToString(), "page", $"{page + 1}"))
            };

            Data = items.Skip((page - 1) * perPage).Take(perPage).Select(transform).ToList();
        }