예제 #1
0
 public async Task <IPagedResult <AssignmentToPointOfSale> > BrowseAsync(IPagedQueryImpl <AssignmentToPointOfSale> pagedQuery)
 {
     if (pagedQuery == null)
     {
         throw new ArgumentNullException(nameof(pagedQuery));
     }
     return(await DbContext.Assignments.OfType <AssignmentToPointOfSale>().PaginateAsync(pagedQuery));
 }
 public async Task <IPagedResult <SaleBasedStockOperation> > BrowseAsync(IPagedQueryImpl <SaleBasedStockOperation> pagedQuery)
 {
     if (pagedQuery == null)
     {
         throw new ArgumentNullException(nameof(pagedQuery));
     }
     return(await DbContext.StockOperations.OfType <SaleBasedStockOperation>().PaginateAsync(pagedQuery));
 }
예제 #3
0
 public virtual async Task <IPagedResult <TEntity> > BrowseAsync(IPagedQueryImpl <TEntity> pagedQuery)
 {
     return(await QueryableAccessorFunc().PaginateAsync(pagedQuery));
 }
예제 #4
0
        internal static Task <IPagedResult <T> > PaginateClientsideAsync <T>(this ICollection <T> collection, IPagedQueryImpl <T> pagedQuery)
        {
            if (collection == null)
            {
                throw new ArgumentNullException(nameof(collection));
            }
            if (pagedQuery == null)
            {
                throw new ArgumentNullException(nameof(pagedQuery));
            }

            var pageNo = pagedQuery.CurrentPage;

            if (pageNo < 1)
            {
                pageNo = 1;
            }

            var resultsPerPage = pagedQuery.ResultsPerPage;

            if (resultsPerPage < 1)
            {
                resultsPerPage = 10;
            }

            var items = pagedQuery.Apply(collection.AsQueryable());

            if (items.Any() == false)
            {
                return(Task.FromResult <IPagedResult <T> >(new PagedResult <T>(new PagedResult(pageNo, resultsPerPage, 0, 0), null)));
            }

            var resultCount    = items.Count();
            var paginationData = new PagedResult(pageNo, resultsPerPage, (int)Math.Ceiling(1d * resultCount / resultsPerPage), resultCount);

            items = items.Skip(resultsPerPage * (pageNo - 1)).Take(resultsPerPage);
            return(Task.FromResult <IPagedResult <T> >(new PagedResult <T>(paginationData, items)));
        }
예제 #5
0
        public static async Task <IPagedResult <T> > PaginateAsync <T>(this IQueryable <T> queryable, IPagedQueryImpl <T> pagedQuery)
        {
            if (queryable == null)
            {
                throw new ArgumentNullException(nameof(queryable));
            }
            if (pagedQuery == null)
            {
                throw new ArgumentNullException(nameof(pagedQuery));
            }

            var pageNo = pagedQuery.CurrentPage;

            if (pageNo < 1)
            {
                pageNo = 1;
            }

            var resultsPerPage = pagedQuery.ResultsPerPage;

            if (resultsPerPage < 1)
            {
                resultsPerPage = 10;
            }

            queryable = pagedQuery.Apply(queryable);

            if (await queryable.AnyAsync() == false)
            {
                return(new PagedResult <T>(new PagedResult(pageNo, resultsPerPage, 0, 0), null));
            }

            var resultCount = await queryable.CountAsync();

            var paginationData = new PagedResult(pageNo, resultsPerPage, (int)Math.Ceiling(1d * resultCount / resultsPerPage), resultCount);
            var items          = await queryable.Skip(resultsPerPage *(pageNo - 1)).Take(resultsPerPage).ToListAsync();

            return(new PagedResult <T>(paginationData, items));
        }
예제 #6
0
 public async Task <IPagedResult <UserAuthorization> > BrowseAsync(IPagedQueryImpl <UserAuthorization> query)
 {
     return(await _dbContext.UserAuthorizations.PaginateAsync(query));
 }
예제 #7
0
 public Task <IPagedResult <T> > PaginateAsync(ICollection <T> sourceCollection, IPagedQueryImpl <T> query)
 {
     return(sourceCollection.PaginateClientsideAsync(query));
 }
예제 #8
0
 public async Task <IPagedResult <SpendingOfUsers> > BrowseAsync(IPagedQueryImpl <SpendingOfUsers> query)
 => await _dbContext.SpendingOfUsers.PaginateAsync(query);
예제 #9
0
 public async Task <IPagedResult <SaleStrategy> > BrowseAsync(IPagedQueryImpl <SaleStrategy> query)
 {
     return(await _paginator.PaginateAsync(_saleStrategies, query));
 }
예제 #10
0
        public async Task <IPagedResult <AuthenticationMeans> > BrowseMeansAssignedToPointOfSale(Guid posId, IPagedQueryImpl <AuthenticationMeans> query)
        {
            var now = DateTimeOffset.UtcNow;

            return(await _dbContext.Assignments.OfType <AssignmentToPointOfSale>().Where(ass => ass.PointOfSaleId == posId)
                   .Join(_dbContext.MeansOfAuthentication, ass => ass.MeansId, means => means.Id, (ass, means) => means)
                   .PaginateAsync(query));
        }