Example #1
0
        public static Task <PaginatedResult <TItem> > MakePageAsync <TCount, TItem>(this IPaginator paginator, IRepositoryBase repository,
                                                                                    IQueryable <TCount> countQuery,
                                                                                    IQueryable <TItem> itemsQuery,
                                                                                    PaginatedQuery model, CancellationToken cancellationToken = default)
            where TCount : class where TItem : class
        {
            if (paginator == null)
            {
                throw new ArgumentNullException(nameof(paginator));
            }

            if (repository == null)
            {
                throw new ArgumentNullException(nameof(repository));
            }

            if (countQuery == null)
            {
                throw new ArgumentNullException(nameof(countQuery));
            }

            if (itemsQuery == null)
            {
                throw new ArgumentNullException(nameof(itemsQuery));
            }

            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            return(paginator.MakePageAsync(repository, countQuery, itemsQuery, model.Page, model.PageSize, cancellationToken));
        }
Example #2
0
        public async Task <IPagedResults <EvacueeListItem> > GetEvacueesPaginatedAsync(EvacueeSearchQueryParameters searchQuery)
        {
            var query = AssembleQuery(searchQuery);

            var pagedQuery = new PaginatedQuery <Models.Db.ViewEvacuee>(query, searchQuery.Offset, searchQuery.Limit);

            var evacuees = await pagedQuery.Query.Sort(MapSortToFields(searchQuery.SortBy)).Distinct().Select(e => mapper.Map <EvacueeListItem>(e)).ToArrayAsync();

            return(new PaginatedList <EvacueeListItem>(evacuees, pagedQuery.Pagination));
        }
        public async Task <Paginated <TEntity> > GetWherePaginated(PaginatedQuery <TEntity> query)
        {
            int            start = (query.Page - 1) * query.PageSize;
            List <TEntity> data  = new List <TEntity>();

            if (query.Order == Enumerators.Order.Ascending)
            {
                if (query.ChildObjectNamesToInclude != null && query.ChildObjectNamesToInclude.Count() > 0)
                {
                    var queryable = _context.Set <TEntity>().AsQueryable();
                    foreach (var item in query.ChildObjectNamesToInclude)
                    {
                        queryable = queryable.Include(item);
                    }
                    queryable = queryable.Where(query.predicate).OrderBy(x => x.Id).AsNoTracking().Skip(start).Take(query.PageSize);
                    data      = await queryable.ToListAsync();
                }
                else
                {
                    data = await _context.Set <TEntity>().Where(query.predicate).OrderBy(x => x.Id).AsNoTracking().Skip(start).Take(query.PageSize).ToListAsync();
                }
            }
            else
            {
                if (query.ChildObjectNamesToInclude != null && query.ChildObjectNamesToInclude.Count() > 0)
                {
                    var queryable = _context.Set <TEntity>().AsQueryable();
                    foreach (var item in query.ChildObjectNamesToInclude)
                    {
                        queryable = queryable.Include(item);
                    }
                    data = await queryable.Where(query.predicate).OrderByDescending(x => x.Id).AsNoTracking().Skip(start).Take(query.PageSize).ToListAsync();
                }
                else
                {
                    data = await _context.Set <TEntity>().Where(query.predicate).OrderByDescending(x => x.Id).AsNoTracking().Skip(start).Take(query.PageSize).ToListAsync();
                }
            }
            var count = await CountWhere(query.predicate);

            return(new Paginated <TEntity> {
                Page = query.Page, PageSize = query.PageSize, Data = data, TotalCount = count
            });
        }
        public async Task <PaginatedResult <ProductsListModel> > GetPage(PaginatedQuery request)
        {
            var query = _readOnlyRepository.Query <Product>(x => x.Status == EnabledStatus.Enabled);

            if (!string.IsNullOrEmpty(request.Term))
            {
                var term = request.Term.Trim();
                query = query.Where(x => x.Name.Contains(term));
            }

            var sortCriteria = request.GetSortCriteria();
            var items        = query
                               .ProjectTo <ProductsListModel>(_mapper.ConfigurationProvider)
                               .OrderByOrDefault(sortCriteria, x => x.Name);

            var page = await _paginator.MakePageAsync(_readOnlyRepository, query, items, request);

            return(page);
        }
Example #5
0
        public async Task <IActionResult> Get([FromQuery] PaginatedQuery query)
        {
            var page = await _cartService.GetPage(query);

            return(Ok(page));
        }
Example #6
0
 public ActionResult <PagedListResult <Hero> > Paginated([FromQuery] PaginatedQuery query)
 {
     return(Ok(businessLayer.GetPaginated(query.PageNumber, query.PageSize, query.OrderBy, query.SortDirection)));
 }
Example #7
0
        public async Task <IPagedResults <EvacueeListItem> > GetEvacueesAsync(EvacueeSearchQueryParameters searchQuery)
        {
            if (searchQuery.HasSortBy())
            {
                // Sort by whatever parameter was included with the query
                searchQuery.SortBy = MapSortToFields(searchQuery.SortBy);
            }
            else
            {
                // default search is always sort descending by ess file number
                searchQuery.SortBy = "-essFileNumber";
            };

            var query = db.ViewEvacuees
                        // Inactive evacuees are soft deleted. We do not return them or give the user the option yet.
                        .Where(e => e.Active == searchQuery.Active)
                        // we sort the larger collection first before letting the subset (paginated ones be sorted)
                        .Sort(MapSortToFields(searchQuery.SortBy));

            if (searchQuery.HasQuery())
            {
                // Simple search. When a search query is provided search should match multiple things from the record. Query can match multiple things.
                query = query.Where(e =>
                                    EF.Functions.Like(e.LastName, $"%{searchQuery.Query}%") ||
                                    e.IncidentTaskNumber == searchQuery.Query ||
                                    e.RegistrationId == searchQuery.Query ||
                                    EF.Functions.Like(e.EvacuatedTo, $"%{searchQuery.Query}%") ||
                                    EF.Functions.Like(e.EvacuatedFrom, $"%{searchQuery.Query}%"));
            }
            else
            {
                // Advanced search. There is a null query. However the client has supplied other specific parameters to search by.
                // if a search parameter is not null, then add a "where" clause to the query matching the supplied UTF-16 query string
                if (!string.IsNullOrWhiteSpace(searchQuery.LastName))
                {
                    query = query.Where(e => EF.Functions.Like(e.LastName, $"%{searchQuery.LastName}%"));
                }
                if (!string.IsNullOrWhiteSpace(searchQuery.FirstName))
                {
                    query = query.Where(e => EF.Functions.Like(e.FirstName, $"%{searchQuery.FirstName}%"));
                }
                if (!string.IsNullOrWhiteSpace(searchQuery.IncidentTaskNumber))
                {
                    query = query.Where(e => e.IncidentTaskNumber == searchQuery.IncidentTaskNumber);
                }
                if (!string.IsNullOrWhiteSpace(searchQuery.EssFileNumber))
                {
                    query = query.Where(e => e.RegistrationId == searchQuery.EssFileNumber);
                }
                if (!string.IsNullOrWhiteSpace(searchQuery.EvacuatedFrom))
                {
                    query = query.Where(e => e.EvacuatedFrom == searchQuery.EvacuatedFrom);
                }
                if (!string.IsNullOrWhiteSpace(searchQuery.EvacuatedTo))
                {
                    query = query.Where(e => e.EvacuatedTo == searchQuery.EvacuatedTo);
                }

                // if has referrals has a value do some things. Else is omit the where clause so it is omitted
                if (searchQuery.HasReferrals.HasValue)
                {
                    // (Why can searchQuery be valueless in the object? It should take memory space whether we intantiate it or not.)
                    if (searchQuery.HasReferrals.Value)
                    {
                        // set the "where" clause for only evacuees with referrals
                        query = query.Where(e => e.HasReferrals);
                    }
                    else
                    {
                        // set the "where" clause for only evacuees without referrals
                        query = query.Where(e => !e.HasReferrals);
                    }
                }
                // allow for filtering on registration completion state
                if (searchQuery.RegistrationCompleted.HasValue)
                {
                    query = query.Where(e => e.IsFinalized == searchQuery.RegistrationCompleted.Value);
                }
            }

            // build the paginated query
            var pagedQuery = new PaginatedQuery <Models.Db.ViewEvacuee>(query, searchQuery.Offset, searchQuery.Limit);

            // get results back from
            var results = await pagedQuery.Query.Sort(MapSortToFields(searchQuery.SortBy)).ToArrayAsync();

            // map the evacueeList
            return(new PaginatedList <EvacueeListItem>(results.Select(mapper.Map <EvacueeListItem>), pagedQuery.Pagination));
        }
Example #8
0
        public async Task <IActionResult> GetCategories([FromQuery] PaginatedQuery query)
        {
            var page = await _productsService.GetCategories(query);

            return(Ok(page));
        }
Example #9
0
        public async Task <IActionResult> Get([FromQuery] PaginatedQuery query, Guid categoryid)
        {
            var page = await _productsService.GetPage(query, categoryid);

            return(Ok(page));
        }