Esempio n. 1
0
        public PaginatedData <TData> GetPaginated <TData>(IPaginationSpecification <TEntity, TData> specification)
        {
            List <TData> data = _context
                                .Set <TEntity>()
                                .ApplyPaginationSpecification(specification)
                                .ToList();

            int count = _context
                        .Set <TEntity>()
                        .ApplayBaseSpecification(specification)
                        .Count();

            return(new PaginatedData <TData>(
                       data: data,
                       count: count));
        }
Esempio n. 2
0
        public async Task <PaginatedData <TData> > GetPaginated <TData>(IPaginationSpecification <TEntity, TData> specification)
        {
            List <TData> data = await _context
                                .Set <TEntity>()
                                .AsNoTracking()
                                .ApplyPaginationSpecification(specification)
                                .ToListAsync();

            int count = await _context
                        .Set <TEntity>()
                        .ApplayBaseSpecification(specification)
                        .CountAsync();

            return(new PaginatedData <TData>(
                       data: data,
                       count: count));
        }
Esempio n. 3
0
        public static IQueryable <TData> ApplyPaginationSpecification <TEntity, TData>(this IQueryable <TEntity> query, IPaginationSpecification <TEntity, TData> specification)
            where TEntity : class, IBaseEntity
        {
            if (specification == null)
            {
                throw new ArgumentNullException($"Specification can not be null");
            }

            if (specification.Skip < 0 || specification.Take < 0)
            {
                throw new ArgumentOutOfRangeException($"Skip and Take must be greater then 0");
            }

            query = query.OrderByDescending(x => x._CreatedDate);
            IQueryable <TData> selectQuery = query.ApplaySelectSpecification(specification);

            selectQuery = selectQuery
                          .Skip(specification.Skip)
                          .Take(specification.Take);

            return(selectQuery);
        }