Esempio n. 1
0
 public void Run(IPageRequest nextCommand)
 {
     while (nextCommand != null)
     {
         nextCommand = _mediator.Send(nextCommand);
     }
 }
Esempio n. 2
0
 /// <summary>
 /// Request to change a page
 /// </summary>
 /// <param name="request">The request.</param>
 /// <exception cref="System.ArgumentNullException">request</exception>
 public void Change(IPageRequest request)
 {
     if (request == null)
     {
         throw new ArgumentNullException(nameof(request));
     }
     OnNext(request);
 }
Esempio n. 3
0
 public async Task <PageResponse> Page(string tableName, IPageRequest req)
 {
     if (!req.ContainsQueryField("columnNum"))
     {
         return(PageResponse <ContentData> .Error("无效数据"));
     }
     return(await _dapper.Page(tableName, req));
 }
Esempio n. 4
0
        /// <summary>
        /// Returns a single page of results from an IQueryable.
        /// </summary>
        /// <typeparam name="T">The collection type.</typeparam>
        /// <param name="source">The collection to be paged.</param>
        /// <param name="request">An IPageRequest specifying a PageSize and a PageNumber to by which to reduce the collection.</param>
        /// <returns>the IQueryable with Skip() and Take() applied.</returns>
        public static IQueryable <T> Page <T>(this IQueryable <T> source, IPageRequest request)
        {
            if (request is object)
            {
                return(source.Page(request.PageNumber, request.PageSize));
            }

            return(source);
        }
Esempio n. 5
0
        /// <summary>
        /// Returns a single page of results from an IOrderedQueryable.
        /// </summary>
        /// <typeparam name="T">The collection type.</typeparam>
        /// <param name="source">The collection to be paged.</param>
        /// <param name="request">An IPageRequest specifying a PageSize and a PageNumber to reduce the collection by.</param>
        /// <returns>the IOrderedQueryable with Skip() and Take() applied.</returns>
        public static IQueryable <T> Page <T>(this IOrderedQueryable <T> source, IPageRequest request)
        {
            if (request != null)
            {
                return(source.Page(request.PageNumber, request.PageSize));
            }

            return(source);
        }
        /// <inheritdoc/>
        public Task <IPageResult <TModel> > AllAsync(IPageRequest pageRequest, CancellationToken ct)
        {
            var result = new PageResult <TModel>
            {
                Items = Enumerable.Empty <TModel>(),
            };

            return(Task.FromResult <IPageResult <TModel> >(result));
        }
        /// <summary>
        /// Computes the Linq 'Take' amount
        /// </summary>
        /// <param name="pageRequest">extended</param>
        /// <returns>skip amount</returns>
        public static int TakeAmount(this IPageRequest pageRequest)
        {
            Arguments.NotNull(pageRequest, nameof(pageRequest));

#pragma warning disable CA1062 // Validate arguments of public methods
            return((int)pageRequest.PageSize);

#pragma warning restore CA1062 // Validate arguments of public methods
        }
Esempio n. 8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:System.Object"/> class.
        /// </summary>
        public PageController(IPageRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            OnNext(request);
        }
Esempio n. 9
0
        public async Task <PageResponse> Page(string tableName, IPageRequest req)
        {
            var whereSql = _pageSqlHelper.OutDefaultParams(req.Queries, out var whereParams);
            var dataSql  = _pageSqlHelper.GetPageDataSql(req, whereSql, tableName);
            var countSql = _pageSqlHelper.GetPageCountSql(whereSql, tableName);

            return(new PageResponse(
                       await Connection().QueryAsync <dynamic>(dataSql, whereParams),
                       await Connection().QueryFirstOrDefaultAsync <long>(countSql, whereParams)));
        }
Esempio n. 10
0
 public static IQueryable <TEntity> PageQuery <TEntity>(IPageRequest request, IQueryable <TEntity> query)
     where TEntity : class
 {
     if (request.StartIndex.HasValue && request.StartIndex.Value > 0)
     {
         query = query.Skip(request.StartIndex.Value);
     }
     query = query.Take(Math.Min(request.Count ?? 100, 100));
     return(query);
 }
Esempio n. 11
0
 public static IReadOnlyDictionary <string, object> ToReadOnlyDictionary(this IPageRequest request)
 {
     return(request
            .GetType()
            .GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)
            .Where(x => x.GetValue(request) != null)
            .ToDictionary(x => {
         var attr = x.GetCustomAttribute <QueryStringKeyAttribute>();
         return attr?.Key ?? x.Name.ToLowerInvariant();
     }, x => x.GetValue(request)));
 }
Esempio n. 12
0
        public IPageRequest <T> AddSortAndOrderItems(IPageRequest <T> request)
        {
            if (SortBy.Item != null)
            {
                request.OrderColumnName = SortBy.Item.Value;
            }

            if (AscDesc.Item != null)
            {
                request.SortOrder = AscDesc.Item.Value;
            }

            return(request);
        }
Esempio n. 13
0
        private IChangeSet <T> Page(IPageRequest request)
        {
            if (request == null || request.Page < 0 || request.Size < 1)
            {
                return(null);
            }

            if (request.Size == _parameters.Size && request.Page == _parameters.Page)
            {
                return(null);
            }

            _parameters = request;
            return(Page());
        }
Esempio n. 14
0
        private IChangeSet <T> Page(List <T> all, ChangeAwareList <T> paged, IPageRequest request)
        {
            if (request == null || request.Page < 0 || request.Size < 1)
            {
                return(null);
            }

            if (request.Size == _parameters.Size && request.Page == _parameters.Page)
            {
                return(null);
            }

            _parameters = request;
            return(Page(all, paged));
        }
Esempio n. 15
0
            public IPagedChangeSet <TObject, TKey>?Paginate(IPageRequest?parameters)
            {
                if (parameters is null || parameters.Page < 0 || parameters.Size < 1)
                {
                    return(null);
                }

                if (parameters.Size == _request.Size && parameters.Page == _request.Page)
                {
                    return(null);
                }

                _request = parameters;

                return(Paginate());
            }
Esempio n. 16
0
        private int CalculatePages(List <T> all, IPageRequest request)
        {
            if (request.Size >= all.Count)
            {
                return(1);
            }

            int pages   = all.Count / request.Size;
            int overlap = all.Count % request.Size;

            if (overlap == 0)
            {
                return(pages);
            }
            return(pages + 1);
        }
Esempio n. 17
0
        public static Pageable <Story> Page(this IEnumerable <Story> source, IPageRequest request)
        {
            Pageable <Story> pageable = new Pageable <Story>
            {
                totalCount = source.Count(),
                pageSize   = request.pageSize,
                page       = request.page
            };

            if (!string.IsNullOrWhiteSpace(request.search))
            {
                pageable.content = source.Where(x => x?.title?.IndexOf(request.search.Trim(), StringComparison.OrdinalIgnoreCase) > -1);
            }
            else
            {
                pageable.content = source;
            }
            pageable.filtered = (pageable.content?.Count()).GetValueOrDefault();
            pageable.content  = pageable.content?.Skip(request.page * request.pageSize).Take(request.pageSize);
            pageable.Calculate();
            return(pageable);
        }
Esempio n. 18
0
 public override string GetPageDataSql(IPageRequest req, string whereSql, string tableName)
 {
     return
         ($"SELECT * FROM (SELECT *,ROW_NUMBER() OVER({req.Sort.ToSql()}) AS RowNum FROM [{tableName}] WHERE 1=1 {whereSql}) AS temp WHERE RowNum BETWEEN {req.Begin} AND {req.End} ");
 }
Esempio n. 19
0
 public Paginator()
 {
     _request  = PageRequest.Default;
     _isLoaded = false;
 }
 public static IQueryable <T> Page <T>(this IQueryable <T> source, IPageRequest request)
 {
     return(source
            .Skip(request.GetSkip())
            .Take(request.PageSize));
 }
Esempio n. 21
0
 private void OnNext(IPageRequest request)
 {
     _subject.OnNext(request);
 }
        private static int GetSkip(this IPageRequest request)
        {
            var pageNumber = request.PageNumber < 1 ? 1 : request.PageNumber;

            return((pageNumber - 1) * request.PageSize);
        }
        /// <summary>
        /// Generalized Queryable search that supports filtering and paging
        /// </summary>
        /// <param name="filter">filter expression</param>
        /// <param name="pageRequest">page request</param>
        /// <param name="ct">cancellation token</param>
        /// <returns>search results</returns>
        protected async Task <IPageResult <TModel> > OnGeneralizedSearch(Expression <Func <TModel, bool> > filter, IPageRequest pageRequest, CancellationToken ct)
        {
            var result = new PageResult <TModel>
            {
                PageNumber = 1,
            };

            var query = this.OnQueryable(ct);

            // add filter expression to query
            if (filter != null)
            {
                var expression = this.DataMapper.MapExpression <Expression <Func <TEntity, bool> > >(filter);
                query = query.Where(expression);
            }

            // add paging expression to query
            if (pageRequest != null)
            {
                result.PageNumber = pageRequest.PageNumber;

                query = query.Skip(pageRequest.SkipAmount())
                        .Take(pageRequest.TakeAmount());

                if (pageRequest.IncludeTotalCount)
                {
                    await this.CountEntityAsync(result, query, ct)
                    .ConfigureAwait(false);
                }
            }

            var entitySet = query.ToList();

            result.Items = this.OnConvert(entitySet);

            return(result);
        }
Esempio n. 24
0
 /// <summary>
 ///     获取分页查询数据SQL
 /// </summary>
 /// <param name="req"></param>
 /// <param name="whereSql"></param>
 /// <param name="tableName"></param>
 /// <returns></returns>
 public abstract string GetPageDataSql(IPageRequest req, string whereSql, string tableName);
 /// <inheritdoc/>
 public Task <IPageResult <TModel> > AllAsync(IPageRequest pageRequest, CancellationToken ct)
 {
     return(this.OnGeneralizedSearch(null, pageRequest, ct));
 }
 /// <inheritdoc/>
 public Task <IPageResult <TModel> > WhereAsync(Expression <Func <TModel, bool> > filter, IPageRequest pageRequest, CancellationToken ct)
 {
     return(this.OnGeneralizedSearch(filter, pageRequest, ct));
 }
Esempio n. 27
0
        public static IQueryable <TEntity> ApplyPaging <TEntity>(this IQueryable <TEntity> query, IPageRequest pageRequest, out int total)
            where TEntity : class, IEntity
        {
            if (pageRequest == null)
            {
                throw new ArgumentNullException(nameof(pageRequest));
            }
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            IQueryable <TEntity> result;

            if (!string.IsNullOrEmpty(pageRequest.OrderColumnName))
            {
                result = query.OrderBy(pageRequest.OrderColumnName + " " + pageRequest.SortOrder);
            }
            else
            {
                result = query.OrderBy("Id");
            }

            total = result.Count();

            return(result.Skip(pageRequest.PageSize * (pageRequest.CurrentPage - 1))
                   .Take(pageRequest.PageSize));
        }
Esempio n. 28
0
        private PageChangeSet <T> Page(List <T> all, ChangeAwareList <T> paged, IPageRequest request, IChangeSet <T> changeset = null)
        {
            if (changeset != null)
            {
                all.Clone(changeset);
            }

            var previous = paged;

            int pages = CalculatePages(all, request);
            int page  = request.Page > pages ? pages : request.Page;
            int skip  = request.Size * (page - 1);

            var current = all.Skip(skip)
                          .Take(request.Size)
                          .ToList();

            var adds    = current.Except(previous);
            var removes = previous.Except(current);

            paged.RemoveMany(removes);

            adds.ForEach(t =>
            {
                var index = current.IndexOf(t);
                paged.Insert(index, t);
            });

            var startIndex = skip;

            var moves = changeset.EmptyIfNull()
                        .Where(change => change.Reason == ListChangeReason.Moved &&
                               change.MovedWithinRange(startIndex, startIndex + request.Size));

            foreach (var change in moves)
            {
                //check whether an item has moved within the same page
                var currentIndex  = change.Item.CurrentIndex - startIndex;
                var previousIndex = change.Item.PreviousIndex - startIndex;
                paged.Move(previousIndex, currentIndex);
            }

            //find replaces [Is this ever the case that it can be reached]
            for (int i = 0; i < current.Count; i++)
            {
                var currentItem  = current[i];
                var previousItem = previous[i];

                if (ReferenceEquals(currentItem, previousItem))
                {
                    continue;
                }

                var index = paged.IndexOf(currentItem);
                paged.Move(i, index);
            }

            var changed = paged.CaptureChanges();

            return(new PageChangeSet <T>(changed, new PageResponse(paged.Count, page, all.Count, pages)));
        }
Esempio n. 29
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:System.Object"/> class.
        /// </summary>
        public PageController(IPageRequest request)
        {
            if (request == null) throw new ArgumentNullException(nameof(request));

            OnNext(request);
        }
Esempio n. 30
0
 /// <summary>
 /// Request to change a page
 /// </summary>
 /// <param name="request">The request.</param>
 /// <exception cref="System.ArgumentNullException">request</exception>
 public void Change(IPageRequest request)
 {
     if (request == null) throw new ArgumentNullException(nameof(request));
     OnNext(request);
 }
Esempio n. 31
0
 public PageOption(string key, string description, IPageRequest action)
 {
     Key         = key;
     Description = description;
     Action      = action;
 }
Esempio n. 32
0
 private void OnNext(IPageRequest request)
 {
     _subject.OnNext(request);
 }
Esempio n. 33
0
        private PageChangeSet <T> CheckParametersAndPage(List <T> all, ChangeAwareList <T> paged, IPageRequest request)
        {
            if (request == null || request.Page < 0 || request.Size < 1)
            {
                return(null);
            }

            return(Page(all, paged, request));
        }