/// <summary>
        /// Returns a list of movies ordered by number of votes and title with pagination.
        /// </summary>
        /// <param name="predicate"></param>
        /// <param name="pageNumber"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public Pagination <Movie> GetMoviesWithPagination(
            Expression <Func <Movie, bool> > predicate,
            int pageNumber,
            int pageSize)
        {
            var query = _context.Set <Movie>()
                        .Include(x => x.CastOfMovies)
                        .ThenInclude(x => x.Cast)
                        .Include(x => x.RatingOfMovies)
                        .OrderByDescending(x => x.RatingOfMovies.Count())
                        .ThenBy(x => x.Title)
                        .AsNoTracking();

            var skipNumber = Pagination <Movie> .CalculateSkipNumber(pageNumber, pageSize);

            var totalItemCount = query.Where(predicate).Count();
            var movies         = query.Where(predicate).Skip(skipNumber).Take(pageSize).ToList();

            return(new Pagination <Movie>
                   (
                       items: movies,
                       totalItemCount: totalItemCount,
                       pageSize: pageSize,
                       currentPage: pageNumber
                   ));
        }
Example #2
0
        public Pagination <Fruit> GetFruitsWithPagination(int pageNumber, int pageSize)
        {
            IQueryable <Fruit> query = _dbSet.OrderBy(x => x.Name);

            var skipNumber = Pagination <Fruit> .CalculateSkipNumber(pageNumber, pageSize);

            var totalItemCount = query.Count();
            var fruits         = query.Skip(skipNumber).Take(pageSize).ToList();

            return(new Pagination <Fruit>
                   (
                       items: fruits,
                       totalItemCount: totalItemCount,
                       pageSize: pageSize,
                       currentPage: pageNumber
                   ));
        }
Example #3
0
        public Pagination <User> GetUsersWithPagination(Expression <Func <User, bool> > predicate, int pageNumber, int pageSize)
        {
            IQueryable <User> query = _dbSet.Where(predicate).OrderBy(x => x.FirstName);

            var skipNumber = Pagination <User> .CalculateSkipNumber(pageNumber, pageSize);

            var totalItemCount = query.Count();
            var users          = query.Skip(skipNumber).Take(pageSize).ToList();

            return(new Pagination <User>
                   (
                       items: users,
                       totalItemCount: totalItemCount,
                       pageSize: pageSize,
                       currentPage: pageNumber
                   ));
        }
Example #4
0
        public async Task <Pagination <User> > GetUsersIncludingRoleWithPaginationAsync(Expression <Func <User, bool> > predicate, int pageNumber, int pageSize)
        {
            IQueryable <User> query = await Task.FromResult(GenerateQuery(filter : predicate,
                                                                          orderBy : x => x.OrderBy(y => y.FirstName),
                                                                          include : x => x.Role));

            var skipNumber = Pagination <User> .CalculateSkipNumber(pageNumber, pageSize);

            var totalItemCount = await query.CountAsync();

            var users = await query.Skip(skipNumber).Take(pageSize).ToListAsync();

            return(new Pagination <User>
                   (
                       items: users,
                       totalItemCount: totalItemCount,
                       pageSize: pageSize,
                       currentPage: pageNumber
                   ));
        }
Example #5
0
        public async Task <Pagination <Movie> > GetIncludingCastWithPaginationAsync(Expression <Func <Movie, bool> > predicate, int pageNumber, int pageSize)
        {
            var query = dbContext.Set <Movie>()
                        .Include(x => x.CastOfMovies).ThenInclude(x => x.Cast)
                        .Include(x => x.MoviesClassification)
                        .OrderByDescending(x => x.MoviesClassification.Count()).ThenBy(x => x.Name)
                        .AsNoTracking();

            var skipNumber = Pagination <Movie> .CalculateSkipNumber(pageNumber, pageSize);

            var totalItemCount = await query.CountAsync();

            var movies = await query.Skip(skipNumber).Take(pageSize).ToListAsync();

            return(new Pagination <Movie>
                   (
                       items: movies,
                       totalItemCount: totalItemCount,
                       pageSize: pageSize,
                       currentPage: pageNumber
                   ));
        }
        /// <summary>
        /// Returns a list of users ordered by name with pagination.
        /// </summary>
        /// <param name="predicate"></param>
        /// <param name="pageNumber"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public Pagination <User> GetUsersWithPagination(
            Expression <Func <User, bool> > predicate,
            int pageNumber,
            int pageSize)
        {
            var query = _context.Set <User>()
                        .Include(x => x.Role)
                        .OrderBy(x => x.Name)
                        .AsNoTracking();

            var skipNumber = Pagination <User> .CalculateSkipNumber(pageNumber, pageSize);

            var totalItemCount = query.Where(predicate).Count();
            var users          = query.Where(predicate).Skip(skipNumber).Take(pageSize).ToList();

            return(new Pagination <User>
                   (
                       items: users,
                       totalItemCount: totalItemCount,
                       pageSize: pageSize,
                       currentPage: pageNumber
                   ));
        }