public virtual async Task <QueryResult <TEntity> > GetPageAsync(QueryObjectParams queryObjectParams, List <Expression <Func <TEntity, object> > > includes)
        {
            IQueryable <TEntity> query = _dbSet;

            query = includes.Aggregate(query, (current, include) => current.Include(include));

            return(await GetOrderedPageQueryResultAsync(queryObjectParams, query).ConfigureAwait(false));
        }
        public virtual async Task <QueryResult <TEntity> > GetPageAsync(QueryObjectParams queryObjectParams, Expression <Func <TEntity, bool> > predicate)
        {
            IQueryable <TEntity> query = _dbSet;

            if (predicate != null)
            {
                query = query.Where(predicate);
            }

            return(await GetOrderedPageQueryResultAsync(queryObjectParams, query).ConfigureAwait(false));
        }
Exemple #3
0
        public async Task <IActionResult> GetPaged([FromBody] QueryObjectParams queryObject)
        {
            var queryResult = await _unitOfWork.OrderRepository.GetPageAsync(queryObject).ConfigureAwait(false);

            if (queryResult is null)
            {
                return(NotFound());
            }

            var mappedOrders = _mapper.Map <IEnumerable <OrderViewModel> >(queryResult.Entities);

            return(Ok(new QueryResult <OrderViewModel>(mappedOrders, queryResult.TotalCount)));
        }
        public virtual async Task <QueryResult <TEntity> > GetPageAsync <TProperty>(QueryObjectParams queryObjectParams, Expression <Func <TEntity, bool> > predicate, List <Expression <Func <TEntity, TProperty> > > includes = null)
        {
            IQueryable <TEntity> query = _dbSet;

            if (includes != null)
            {
                query = includes.Aggregate(query, (current, include) => current.Include(include));
            }

            if (predicate != null)
            {
                query = query.Where(predicate);
            }

            return(await GetOrderedPageQueryResultAsync(queryObjectParams, query).ConfigureAwait(false));
        }
 public virtual async Task <QueryResult <TEntity> > GetPageAsync(QueryObjectParams queryObjectParams)
 {
     return(await GetOrderedPageQueryResultAsync(queryObjectParams, _dbSet).ConfigureAwait(false));
 }
 private IQueryable <TEntity> GetPagePrivateQuery(IQueryable <TEntity> query, QueryObjectParams queryObjectParams)
 {
     return(query.Skip((queryObjectParams.PageNumber - 1) * queryObjectParams.PageSize).Take(queryObjectParams.PageSize));
 }
        public virtual async Task <QueryResult <TEntity> > GetOrderedPageQueryResultAsync(QueryObjectParams queryObjectParams, IQueryable <TEntity> query)
        {
            IQueryable <TEntity> OrderedQuery = query;

            if (queryObjectParams.SortingParams != null && queryObjectParams.SortingParams.Count > 0)
            {
                OrderedQuery = SortingExtension.GetOrdering(query, queryObjectParams.SortingParams);
            }

            var totalCount = await query.CountAsync().ConfigureAwait(false);

            if (OrderedQuery != null)
            {
                var fecthedItems = await GetPagePrivateQuery(OrderedQuery, queryObjectParams).ToListAsync().ConfigureAwait(false);

                return(new QueryResult <TEntity>(fecthedItems, totalCount));
            }

            return(new QueryResult <TEntity>(await GetPagePrivateQuery(_dbSet, queryObjectParams).ToListAsync().ConfigureAwait(false), totalCount));
        }