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)); }
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)); }
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)); }
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)); }
public static IFindFluent <TDocument, TDocument> Paged <TDocument>(this IFindFluent <TDocument, TDocument> find, PagedRequestDTO request) { return(find .Limit(request.PageSize) .Skip(request.PageIndex * request.PageSize)); }