示例#1
0
        public ObjectInstance Paged(object pagedParams)
        {
            PagedParams parameters = new PagedParams(this.Engine.Object.InstancePrototype);

            if (pagedParams != null && pagedParams != Undefined.Value && pagedParams != Null.Value)
            {
                parameters = JurassicHelper.Coerce <PagedParams>(this.Engine, pagedParams);
            }

            return(BuildPagedResult(parameters));
        }
        public async Task <ActionResult> GetPublications([FromQuery] PagedParams param)
        {
            var queryable = _repoWrapper.Publication.Queryable()
                            .Include(p => p.Photos)
                            .Include(p => p.Brand)
                            .Include(p => p.Fuel);


            var publications = await PagedList <Publication> .CreateAsync(queryable.OrderByDescending(
                                                                              c => c.Id), param.PageNumber, param.PageSize);

            Response.AddPagination(publications.CurrentPage, publications.PageSize,
                                   publications.TotalCount, publications.TotalPages);



            return(Ok(publications.ToList()));
        }
示例#3
0
 public async Task <PagedList <Book> > GetAll(PagedParams bookParams)
 {
     return(await uow.Books.Get(include : x => x.Include(y => y.BookCategory).Include(y => y.Publisher), filter : null, orderBy : null, bookParams.PageNumber, bookParams.PageSize));
 }
        public async Task <IActionResult> FilterPublications(PublicationSearchModel filters, [FromQuery] PagedParams param)
        {
            var queryable    = SearchPublication(filters);
            var publications = await PagedList <Publication> .CreateAsync(queryable.OrderByDescending(
                                                                              c => c.Id), param.PageNumber, param.PageSize);

            Response.AddPagination(publications.CurrentPage, publications.PageSize,
                                   publications.TotalCount, publications.TotalPages);

            return(Ok(publications.ToList()));
        }
示例#5
0
        private ObjectInstance BuildPagedResult(PagedParams parameters)
        {
            if (String.IsNullOrEmpty(parameters.Sql))
            {
                parameters.Sql = "";
            }

            if (String.IsNullOrEmpty(parameters.PrimaryKeyField))
            {
                parameters.PrimaryKeyField = this.PrimaryKeyField;
            }

            if (String.IsNullOrEmpty(parameters.PrimaryKeyField))
            {
                throw new JavaScriptException(this.Engine, "Error", "The property named 'primaryKeyField' must be populated with the name of the primary key field to use.");
            }

            if (String.IsNullOrEmpty(parameters.Where))
            {
                parameters.Where = "";
            }

            if (String.IsNullOrEmpty(parameters.OrderBy))
            {
                parameters.OrderBy = parameters.PrimaryKeyField;
            }

            if (String.IsNullOrEmpty(parameters.Columns))
            {
                parameters.Columns = "*";
            }

            if (parameters.PageSize <= 0)
            {
                parameters.PageSize = 20;
            }

            if (parameters.CurrentPage <= 0)
            {
                parameters.CurrentPage = 1;
            }

            var result = this.Engine.Object.Construct();

            string countSql = string.IsNullOrEmpty(parameters.Sql)
                          ? string.Format("SELECT COUNT({0}) FROM {1}", parameters.PrimaryKeyField, GetFullTableName())
                          : string.Format("SELECT COUNT({0}) FROM ({1}) AS PagedTable", parameters.PrimaryKeyField,
                                          parameters.Sql);

            if (!string.IsNullOrEmpty(parameters.Where))
            {
                if (!parameters.Where.Trim().StartsWith("where", StringComparison.CurrentCultureIgnoreCase))
                {
                    parameters.Where = " WHERE " + parameters.Where;
                }
            }

            var query = string.IsNullOrEmpty(parameters.Sql)
                    ? string.Format(
                "SELECT {0} FROM (SELECT ROW_NUMBER() OVER (ORDER BY {1}) AS Row, {0} FROM {2} {3}) AS Paged ",
                parameters.Columns, parameters.OrderBy, GetFullTableName(), parameters.Where)
                    : string.Format(
                "SELECT {0} FROM (SELECT ROW_NUMBER() OVER (ORDER BY {1}) AS Row, {0} FROM ({2}) AS PagedTable {3}) AS Paged ",
                parameters.Columns, parameters.OrderBy, parameters.Sql, parameters.Where);

            var pageStart = (parameters.CurrentPage - 1) * parameters.PageSize;

            query    += string.Format(" WHERE Row > {0} AND Row <={1}", pageStart, (pageStart + parameters.PageSize));
            countSql += parameters.Where;

            var totalRecords = (int)Scalar(countSql, parameters.Args);
            var totalPages   = totalRecords / parameters.PageSize;

            if (totalRecords % parameters.PageSize > 0)
            {
                totalPages += 1;
            }

            result.SetPropertyValue("TotalRecords", totalRecords, false);
            result.SetPropertyValue("TotalPages", totalPages, false);
            result.SetPropertyValue("Items", Query(string.Format(query, parameters.Columns, TableName), parameters.Args), false);
            return(result);
        }
示例#6
0
        public async Task <ActionResult <ApiResponsePagination> > Get([FromQuery] PagedParams bookParams)
        {
            var books = mapper.Map <PagedList <BookDto> >(await bookService.GetAll(bookParams));

            return(new ApiResponsePagination("Books retrived", books.Items, books.Pagination));
        }