Exemple #1
0
        public static IQueryable <T> PageBy <T>([NotNull] this IQueryable <T> query, PagedRequestDTO pagedRequest)
        {
            if (query == null || pagedRequest == null)
            {
                throw new ArgumentException($"{query} can not be null!", nameof(query));
            }

            if (!string.IsNullOrEmpty(pagedRequest.SortColumn))
            {
                var sortColumn = pagedRequest.SortColumn;

                if (!pagedRequest.IsAscending)
                {
                    sortColumn += " desc";
                }

                query = query.OrderBy(sortColumn);
            }

            if (pagedRequest.PageNo == 0)
            {
                return(query);
            }

            int pageSize = pagedRequest.PageSize == 0 ? 10 : pagedRequest.PageSize;
            int pageNo   = pagedRequest.PageNo - 1;

            return(query.PageBy(pageNo * pageSize, pageSize));
        }
Exemple #2
0
        public async Task <ActionResult <IPagedResult <Questions> > > GetPagedAsync([FromBody] QuestionRequest questionRequest)
        {
            try
            {
                var requestPaged = new PagedRequestDTO(questionRequest.PageIndex, questionRequest.PageSize);

                var fieldsValues = new Dictionary <string, string>();
                if (questionRequest.Filters.Any())
                {
                    foreach (var filter in questionRequest.Filters)
                    {
                        fieldsValues.Add(filter.PropertyName, filter.PropertyValue);
                    }
                }

                var sortData = new SortDTO();
                if (questionRequest?.SortData != null)
                {
                    sortData.SortDirection = questionRequest.SortData.SortDirection;
                    sortData.SortField     = questionRequest.SortData.SortField;
                }

                var result = await _questionsService.GetPagedAsync(requestPaged, fieldsValues, sortData);

                return(Ok(result));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <IPagedResult <UsersModel> > GetPagedAsync(PagedRequestDTO requestPaged, Dictionary <string, string> fieldsValues = null, DTO.Common.SortDTO sortData = null)
        {
            var filters = _usersRepository.GetFilters <UsersModel>(fieldsValues);
            var sort    = _usersRepository.GetSortDirection <UsersModel>(sortData);

            return(await _usersRepository.GetPagedListAsync(requestPaged, filters, sort));
        }
Exemple #4
0
        public static IPagedResult <TDocument> ToPagedResult <TDocument, TKey>(
            this IMongoCollection <TDocument> collection,
            FilterDefinition <TDocument> filter,
            PagedRequestDTO request,
            SortDefinition <TDocument> sort = null) where TDocument : BaseDocument <TKey>
        {
            if (sort == null)
            {
                sort = Builders <TDocument> .Sort.Descending(x => x.Id);
            }

            if (filter == null)
            {
                filter = Builders <TDocument> .Filter.Empty;
            }


            var result = collection
                         .Find(filter)
                         .Sort(sort)
                         .Limit(request.PageSize)
                         .Skip(request.PageIndex * request.PageSize)
                         .ToList();

            var count = collection
                        .Find(filter)
                        .CountDocuments();

            return(new PagedResult <TDocument>(request.PageIndex, request.PageSize, result, count));
        }
Exemple #5
0
        public static async Task <IPagedResult <TDocument> > ToPagedResultAsync <TDocument, TKey>(
            this IMongoCollection <TDocument> collection,
            FilterDefinition <TDocument> filter,
            PagedRequestDTO request,
            SortDefinition <TDocument> sort     = null,
            CancellationToken cancellationToken = default(CancellationToken)) where TDocument : BaseDocument <TKey>
        {
            if (sort == null)
            {
                sort = Builders <TDocument> .Sort.Descending(x => x.Id);
            }

            if (filter == null)
            {
                filter = Builders <TDocument> .Filter.Empty;
            }

            var result = collection
                         .Find(filter)
                         .Sort(sort)
                         .Limit(request.PageSize)
                         .Skip(request.PageIndex * request.PageSize)
                         .ToListAsync(cancellationToken);

            var count = collection
                        .Find(filter)
                        .CountDocumentsAsync(cancellationToken);

            await Task.WhenAll(result, count).ConfigureAwait(false);

            return(new PagedResult <TDocument>(request.PageIndex, request.PageSize, result.Result, count.Result));
        }
        public virtual Task <IPagedResult <TEntity> > GetPagedListAsync(PagedRequestDTO request, FilterDefinition <TEntity> filters = null, SortDefinition <TEntity> sort = null, CancellationToken cancellation = default)
        {
            //var count = filters.InList().Count();
            //var count2 = filters.ToObjectDictionary().Count();

            if (filters == null)
            {
                filters = Builders <TEntity> .Filter.Empty;
            }

            return(DbSet.ToPagedResultAsync <TEntity, TEntityKey>(filters, request, sort, cancellation));
        }
        public async Task <IPagedResult <UsersModel> > GetPagedAsync(PagedRequestDTO requestPaged, string requestFilter)
        {
            var filter = Builders <UsersModel> .Filter.Eq("LastName", requestFilter);

            return(await _usersRepository.GetPagedListAsync(requestPaged, filter));
        }
Exemple #8
0
 public static IFindFluent <TDocument, TDocument> Paged <TDocument>(this IFindFluent <TDocument, TDocument> find, PagedRequestDTO request)
 {
     return(find
            .Limit(request.PageSize)
            .Skip(request.PageIndex * request.PageSize));
 }