Exemplo n.º 1
0
        public async Task <PageList <MessageModel> > GetMessagesForUser(MessageParams messageParams)
        {
            var messages = _context.Messages
                           .Include(u => u.Sender).ThenInclude(p => p.Photos)
                           .Include(u => u.Recipient).ThenInclude(p => p.Photos)
                           .AsQueryable();

            switch (messageParams.MessageContainer)
            {
            case "Inbox":
                messages = messages.Where(u => u.RecipientId == messageParams.UserId && u.RecipientDeleted == false);
                break;

            case "Outbox":
                messages = messages.Where(u => u.SenderId == messageParams.UserId && u.SenderDeleted == false);
                break;

            default:
                messages = messages.Where(u => u.RecipientId == messageParams.UserId && u.RecipientDeleted == false && u.IsRead == false);
                break;
            }

            messages = messages.OrderByDescending(d => d.MessageSent);
            return(await PageList <MessageModel> .CreateAsync(messages, messageParams.PageNumber, messageParams.PageSize));
        }
Exemplo n.º 2
0
            public async Task <Result <PageList <ActivityDto> > > Handle(Query request, CancellationToken cancellationToken)
            {
                var query = _context.Activities
                            .Where(d => d.Date >= request.Params.StartDate)
                            .OrderBy(d => d.Date)
                            .ProjectTo <ActivityDto>(_mapper.ConfigurationProvider,
                                                     new { currentUserName = _userAccessor.GetUserName() })
                            .AsQueryable();

                // .ToListAsync(cancellationToken);

                if (request.Params.IsGoing && !request.Params.IsHost)
                {
                    query = query.Where(x => x.Attendees.Any(a => a.Username == _userAccessor.GetUserName()));
                }
                if (!request.Params.IsGoing && request.Params.IsHost)
                {
                    query = query.Where(x => x.HostUsername == _userAccessor.GetUserName());
                }



                return(Result <PageList <ActivityDto> > .Success(
                           await PageList <ActivityDto> .CreateAsync(
                               query, request.Params.PageNumber, request.Params.PageSize)
                           )); // ToListAsync: extension method
            }
Exemplo n.º 3
0
        public async Task <PageList <LikesDTO> > GetLikes(LikesParams likesParams)
        {
            IQueryable <LikesDTO> result = null;

            if (likesParams.Predicate == "like")
            {
                result = _context.Users
                         .Include(x => x.Photos)
                         .Where(x => _context.Likes.Where(x => x.likedByUserId == likesParams.UserId).Select(x => x.likedUserId).Contains(x.Id))
                         .Select(u => new LikesDTO {
                    UserName = u.UserName,
                    Country  = u.Country,
                    photoUrl = u.Photos.FirstOrDefault(x => x.isMain).Url,
                    Age      = u.Age,
                    KnownAs  = u.KnownAs,
                }).OrderBy(x => x.KnownAs);
            }
            if (likesParams.Predicate == "likeBy")
            {
                result = _context.Users
                         .Include(x => x.Photos)
                         .Where(x => _context.Likes.Where(x => x.likedUserId == likesParams.UserId).Select(x => x.likedByUserId).Contains(x.Id))
                         .Select(u => new LikesDTO {
                    UserName = u.UserName,
                    Country  = u.Country,
                    photoUrl = u.Photos.FirstOrDefault(x => x.isMain).Url,
                    Age      = u.Age,
                    KnownAs  = u.KnownAs,
                }).OrderBy(x => x.KnownAs);
            }

            return(await PageList <LikesDTO> .CreateAsync(result, likesParams.PageSize, likesParams.PageNumber));
        }
Exemplo n.º 4
0
        public async Task <PageList <Aluno> > GetAllAlunosAsync(PageParams pageParams, bool incluirDisciplina)
        {
            IQueryable <Aluno> query = _context.Alunos;

            if (incluirDisciplina)
            {
                query = query.Include(a => a.AlunosDisciplinas) // Coloca dentro de alunos a tabela AlunosDisciplina
                        .ThenInclude(ad => ad.Disciplina)       // Coloca dentro da tabela Alunos disciplina os dados da disciplina
                        .ThenInclude(d => d.Professor);         // Coloca dentro da tabela disciplina os dados do professor que da a aula
            }
            query = query.AsNoTracking().OrderBy(a => a.Id);

            if (!string.IsNullOrEmpty(pageParams.Nome))
            {
                query = query.Where(
                    aluno => aluno.Nome.ToUpper().Contains(pageParams.Nome.ToUpper()) ||
                    aluno.Sobrenome.ToUpper().Contains(pageParams.Nome.ToUpper())
                    );
            }

            if (pageParams.Matricula > 0)
            {
                query = query.Where(aluno => aluno.Matricula == pageParams.Matricula);
            }

            if (pageParams.Ativo)
            {
                query = query.Where(aluno => aluno.Ativo == pageParams.Ativo);
            }

            return(await PageList <Aluno> .CreateAsync(query, pageParams.PageNumber, pageParams.PageSize));
        }
Exemplo n.º 5
0
        public async Task <PageList <User> > GetUsers(UserParams userParams)
        {
            var users = _context.Users.OrderByDescending(o => o.LastActive).AsQueryable();

            users = users.Where(u => u.Id != userParams.UserId);
            users = users.Where(u => u.Gender == userParams.Gender);

            if (userParams.MinAge != 18 || userParams.MaxAge != 99)
            {
                var minDateOfBirth = DateTime.Today.AddYears(-userParams.MaxAge - 1);
                var maxDateOfBirth = DateTime.Today.AddYears(-userParams.MinAge);
                users = users.Where(u => u.DateOfBirth >= minDateOfBirth && u.DateOfBirth <= maxDateOfBirth);
            }

            if (!string.IsNullOrEmpty(userParams.OrderBy))
            {
                switch (userParams.OrderBy)
                {
                case "created":
                    users = users.OrderByDescending(o => o.Created);
                    break;

                default:
                    users = users.OrderByDescending(o => o.LastActive);
                    break;
                }
            }

            return(await PageList <User> .CreateAsync(users, userParams.PageNumber, userParams.PageSize));
        }
Exemplo n.º 6
0
        public async Task <PageList <LikeDto> > GetUserLikes(LikesParams likesParams)
        {
            var users = _context.Users.OrderBy(u => u.UserName).AsQueryable();
            var likes = _context.Likes.AsQueryable();

            if (likesParams.Predicate == "liked")
            {
                likes = likes.Where(like => like.SourceUserId == likesParams.UserId);
                users = likes.Select(like => like.LikedUser);
            }

            if (likesParams.Predicate == "likedBy")
            {
                likes = likes.Where(like => like.LikedUserId == likesParams.UserId);
                users = likes.Select(like => like.LikedUser);
            }

            var likeUsers = users.Select(user => new LikeDto
            {
                Username = user.UserName,
                KnownAs  = user.KnownAs,
                Age      = user.DateOfBirth.CalculateAge(),
                PhotoUrl = user.Photos.FirstOrDefault(p => p.IsMain).Url,
                City     = user.City,
                Id       = user.Id
            });

            return(await PageList <LikeDto> .CreateAsync(likeUsers, likesParams.PageNumber, likesParams.PageSize));
        }
        public async Task <PageList <Aluno> > GetAllAlunosAsync(PageParams pageParams, bool includeProfessor = false)
        {
            IQueryable <Aluno> query = database.alunos;

            if (includeProfessor)
            {
                query = query.Include(a => a.AlunosDisciplinas).ThenInclude(a => a.Disciplina).ThenInclude(a => a.Professor);
            }

            query = query.AsNoTracking().OrderBy(a => a.Id);

            if (!string.IsNullOrEmpty(pageParams.Nome))
            {
                query = query.Where(aluno => aluno.Nome.ToUpper().Contains(pageParams.Nome.ToUpper()) || aluno.Sobrenome.ToUpper().Contains(pageParams.Nome.ToUpper()));
            }

            if (pageParams.Matricula > 0)
            {
                query = query.Where(aluno => aluno.Matricula == pageParams.Matricula);
            }

            if (pageParams.Ativo != null)
            {
                query = query.Where(aluno => aluno.Ativo == (pageParams.Ativo != 0));
            }

            return(await PageList <Aluno> .CreateAsync(query, pageParams.PageNumber, pageParams.PageSize));
        }
Exemplo n.º 8
0
        // GET: /Sales
        public async Task <IActionResult> Index(string sortOrder, string filter, string search, int?pageIndex)
        {
            ViewData["SortOrder"]          = sortOrder; // SORT ORDER WHILE NAVIGATING "NEXT/PREVIOUS" PAGES
            ViewData["SortCustomerNumber"] = String.IsNullOrEmpty(sortOrder) ? "cusnum_desc" : "";
            ViewData["SortOrderCount"]     = (sortOrder == "ordercount_asc") ? "ordercount_desc" : "ordercount_asc";

            if (search != null)
            {
                pageIndex = 1; // NEW SEARCH LEADS TO NEW RESULTS, RESET PAGE TO 1
            }
            else
            {
                search = filter;
            }

            ViewData["SearchFilter"] = search;  // KEEP SEARCH FILTER WHILE "PAGING"

            IQueryable <CustomerOrdersViewModel> groupQuery =
                from item in _ctx.Orders
                group item by item.Customer.CustomerNumber into orderGroup
                select new CustomerOrdersViewModel()
            {
                CustomerNumber = orderGroup.Key,
                OrderCount     = orderGroup.Count(),
            };

            if (!String.IsNullOrEmpty(filter))
            {
                groupQuery = groupQuery.Where(p => p.CustomerNumber.ToString().Contains(filter));
            }

            switch (sortOrder)
            {
            case "cusnum_desc":
                groupQuery = groupQuery.OrderByDescending(p => p.CustomerNumber);
                break;

            case "ordercount_asc":
                groupQuery = groupQuery.OrderBy(i => i.OrderCount);
                break;

            case "ordercount_desc":
                groupQuery = groupQuery.OrderByDescending(i => i.OrderCount);
                break;

            default:
                groupQuery = groupQuery.OrderBy(p => p.CustomerNumber);
                break;
            }

            int itemsOnPage = 6;

            // CONVERT QUERY TO SINGLE PAGE OF ITEMS IN COLLECTION THAT SUPPORTS PAGING
            return(View(await PageList <CustomerOrdersViewModel> .CreateAsync(groupQuery.AsNoTracking(),
                                                                              pageIndex ?? 1, // IF NULL, RETURN 1 - ELSE RETURN PAGEINDEX VALUE
                                                                              itemsOnPage)));

            //return View(await groupQuery.AsNoTracking().ToListAsync());
        }
Exemplo n.º 9
0
        private async Task <PageList <TodoItem> > GetTestTodos()
        {
            var todos = new List <TodoItem>();

            todos.Add(new TodoItem()
            {
                Id          = "da57e03d-aa64-4655-9e9f-00bcc5e7fc9d",
                Title       = "Teszt Feladat 1234",
                Description = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.",
                IsFinished  = false
            });
            todos.Add(new TodoItem()
            {
                Id          = "2083af66-2b81-420b-ad3b-3b5e2ed3d3eb",
                Title       = "Teszt Feladat 212389",
                Description = "Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.",
                IsFinished  = false
            });
            todos.Add(new TodoItem()
            {
                Id          = "a1b3f565-884a-4ac9-bfb1-9a73ce411923",
                Title       = "Teszt Feladat 12974",
                Description = "Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.",
                IsFinished  = false
            });
            todos.Add(new TodoItem()
            {
                Id          = "a64c051d-23fa-4a6e-8f17-0e3ddb328d6d",
                Title       = "Teszt Feladat 3447",
                Description = "Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.",
                IsFinished  = false
            });
            todos.Add(new TodoItem()
            {
                Id          = "79629919-a85c-4215-8951-e0005cf26945",
                Title       = "Teszt Feladat 9999",
                Description = " In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo.",
                IsFinished  = true
            });
            todos.Add(new TodoItem()
            {
                Id          = "e9aba336-e89b-489b-ab34-d10765ef38c0",
                Title       = "Teszt Feladat 1357",
                Description = "Nullam dictum felis eu pede mollis pretium. Integer tincidunt.",
                IsFinished  = true
            });
            todos.Add(new TodoItem()
            {
                Id          = "e2174a67-8d46-4fb4-b360-d14cd4404247",
                Title       = "Teszt Feladat",
                Description = "Cras dapibus. Vivamus elementum semper nisi. ",
                IsFinished  = true
            });

            var todosMock = todos.AsQueryable().BuildMock();
            var pageList  = await PageList <TodoItem> .CreateAsync(todosMock.Object, 1, 25);

            return(pageList);
        }
Exemplo n.º 10
0
        // GET: Products
        public async Task <IActionResult> Index(string sortOrder, string filter, string search, int?pageIndex)
        {
            ViewData["SortOrder"]         = sortOrder; // SORT ORDER WHILE NAVIGATING "NEXT/PREVIOUS" PAGES
            ViewData["SortProductNumber"] = String.IsNullOrEmpty(sortOrder) ? "prodnum_desc" : "";
            ViewData["SortPrice"]         = (sortOrder == "price_asc") ? "price_desc" : "price_asc";
            ViewData["SortName"]          = (sortOrder == "name_asc") ? "name_desc" : "name_asc";

            if (search != null)
            {
                pageIndex = 1; // NEW SEARCH LEADS TO NEW RESULTS, RESET PAGE TO 1
            }
            else
            {
                search = filter;
            }

            ViewData["SearchFilter"] = search;

            var query = from product in _ctx.Products select product;

            if (!String.IsNullOrEmpty(filter))
            {
                query = query.Where(p => p.ProductNumber.ToString().Contains(filter) || p.Name.Contains(filter));
            }

            switch (sortOrder)
            {
            case "prodnum_desc":
                query = query.OrderByDescending(p => p.ProductNumber);
                break;

            case "price_asc":
                query = query.OrderBy(p => p.Price);
                break;

            case "price_desc":
                query = query.OrderByDescending(p => p.Price);
                break;

            case "name_asc":
                query = query.OrderBy(p => p.Name);
                break;

            case "name_desc":
                query = query.OrderByDescending(p => p.Name);
                break;

            default:
                query = query.OrderBy(p => p.ProductNumber);
                break;
            }

            int itemsOnPage = 3;

            // CONVERT QUERY TO SINGLE PAGE OF ITEMS IN COLLECTION THAT SUPPORTS PAGING
            return(View(await PageList <Product> .CreateAsync(query.AsNoTracking(),
                                                              pageIndex ?? 1, // IF NULL, RETURN 1 - ELSE RETURN PAGEINDEX VALUE
                                                              itemsOnPage)));
        }
        public async Task <PageList <User> > GetUsers(UserParams userParams)
        {
            var users = _context.Users.Include(p => p.Photos);

            //return users;

            return(await PageList <User> .CreateAsync(users, userParams.PageNumber, userParams.PageSize));
        }
Exemplo n.º 12
0
        public async Task <PageList <Order> > GetCustomerOrders(int id, PageParams pageParams)
        {
            //var customer = await _dbContext.Customers.SingleOrDefaultAsync(c => c.Id == id);

            var orders = _dbContext.Orders.Where(o => o.Customer.Id == id).AsQueryable();

            return(await PageList <Order> .CreateAsync(orders, pageParams.PageNumber, pageParams.PageSize));
        }
Exemplo n.º 13
0
        public async Task <PageList <InvoiceSlabTypeHeaderDto> > GetInvoiceTypeslabHeader(int invProfile, int pageIndex, int pageSize)
        {
            var invSlabHeaderList = _tcContext.InvoiceSlabTypeHeaders.Where(x => x.InvoiceProfileId == invProfile)
                                    .ProjectTo <InvoiceSlabTypeHeaderDto>(_mapper.ConfigurationProvider)
                                    .AsNoTracking();

            return(await PageList <InvoiceSlabTypeHeaderDto> .CreateAsync(invSlabHeaderList, pageIndex, pageSize));
        }
Exemplo n.º 14
0
        public async Task <PageList <InvoiceProfileDto> > GetInvoiceProfile(int pageIndex, int pageSize)
        {
            var invProfileList = _tcContext.InvoiceProfiles
                                 .ProjectTo <InvoiceProfileDto>(_mapper.ConfigurationProvider)
                                 .AsNoTracking();

            return(await PageList <InvoiceProfileDto> .CreateAsync(invProfileList, pageIndex, pageSize));
        }
Exemplo n.º 15
0
        public async Task <PageList <Party> > GetPartyList(BaseParameter para)
        {
            var list = _db.Party
                       .OrderByDescending(p => p.PartyDate)
                       .AsQueryable();

            return(await PageList <Party> .CreateAsync(list, para.PageNumber, para.PageSize));
        }
Exemplo n.º 16
0
        public async Task <PageList <Project> > GetAllProjectsAsync(PageParams pageParams)
        {
            IQueryable <Project> query = _context.Project;

            query = query.AsNoTracking().OrderBy(d => d.Id);

            return(await PageList <Project> .CreateAsync(query, pageParams.PageNumber, pageParams.PageSize));
        }
Exemplo n.º 17
0
        public async Task <PageList <Turma> > GetAllTurmas(PageParams pageParams)
        {
            IQueryable <Turma> query = _context.Turmas
                                       .Include(t => t.Escola);

            //return await query.ToArrayAsync();
            return(await PageList <Turma> .CreateAsync(query, pageParams.PageNumber, pageParams.PageSize));
        }
Exemplo n.º 18
0
        public async Task <PageList <Member> > GetUserFriends(ParaMember para)
        {
            var list = _db.Member
                       .Where(x => !x.IsCloseData)
                       .OrderByDescending(x => x.LastDate)
                       .AsQueryable();

            return(await PageList <Member> .CreateAsync(list, para.PageNumber, para.PageSize));
        }
Exemplo n.º 19
0
        public async Task <PageList <Aluno> > GetAllAlunos(PageParams pageParams)
        {
            IQueryable <Aluno> query = _context.Alunos.Include(a => a.Turma);

            query = query.AsNoTracking().OrderBy(a => a.IdAluno);

            //return await query.ToArrayAsync();
            return(await PageList <Aluno> .CreateAsync(query, pageParams.PageNumber, pageParams.PageSize));
        }
Exemplo n.º 20
0
        public async Task <PageList <Activity> > GetMyActivityList(int userId, ParaActivity para)
        {
            var results = _db.Activity
                          .Where(x => x.UserId == userId)
                          .OrderByDescending(p => p.PartyId)
                          .AsQueryable();

            return(await PageList <Activity> .CreateAsync(results, para.PageNumber, para.PageSize));
        }
Exemplo n.º 21
0
        public async Task <PageList <Componentas> > GetComponents(ComponentParams componentParams)
        {
            var componentass = _context.Componentass.Include(p => p.Photos).AsQueryable();

            if (componentParams.Size != null)
            {
                componentass = componentass.Where(u => u.Size == componentParams.Size);
            }

            if (componentParams.Type != null)
            {
                componentass = componentass.Where(u => u.Type == componentParams.Type);
            }

            if (componentParams.Mnf != null)
            {
                componentass = from u in componentass
                               where u.Mnf.Contains(componentParams.Mnf)
                               select u;
            }
            if (componentParams.Nominal != null)
            {
                componentass = from u in componentass
                               where u.Nominal.Contains(componentParams.Nominal)
                               select u;
            }
            if (componentParams.BuhNr != null)
            {
                componentass = from u in componentass
                               where u.BuhNr.Contains(componentParams.BuhNr)
                               select u;
            }

            if (!string.IsNullOrEmpty(componentParams.OrderBy))
            {
                switch (componentParams.OrderBy)
                {
                case "created":
                    componentass = componentass.OrderByDescending(u => u.Created);
                    break;

                case "nominal":
                    componentass = componentass.OrderBy(u => u.Nominal);
                    break;

                case "mnf":
                    componentass = componentass.OrderBy(u => u.Mnf);
                    break;

                default:
                    componentass = componentass.OrderBy(u => u.Id);
                    break;
                }
            }

            return(await PageList <Componentas> .CreateAsync(componentass, componentParams.PageNumber, componentParams.PageSize));
        }
        public async Task <PageList <Inventory> > GetProductInventories(Product product, PageParams pageParams)
        {
            var inventories = _dbContext.Inventories
                              .Where(i => i.Product == product)
                              .Where(i => i.IsArchived == false)
                              .AsQueryable();

            return(await PageList <Inventory> .CreateAsync(inventories, pageParams.PageNumber, pageParams.PageSize));
        }
Exemplo n.º 23
0
        public async Task <PageList <Member> > GetMemberList(BaseParameter para)
        {
            var list = _db.Member
                       .Include(x => x.MemberPhoto)
                       .OrderByDescending(x => x.UserId)
                       .AsQueryable();

            return(await PageList <Member> .CreateAsync(list, para.PageNumber, para.PageSize));
        }
Exemplo n.º 24
0
        public async Task <PageList <Party> > GetMemberPartyList(ParaMember para)
        {
            var partylist = _db.Activity
                            .Include(x => x.Party)
                            .OrderByDescending(x => x.Party.PartyDate)
                            .Where(x => x.UserId == para.UserId)
                            .Select(x => x.Party);

            return(await PageList <Party> .CreateAsync(partylist, para.PageNumber, para.PageSize));
        }
Exemplo n.º 25
0
        public async Task <PageList <CheckeDto> > GetCheckesAsync(CheckParams checkParams)
        {
            var query = _context.Checkes
                        .ProjectTo <CheckeDto>(_mapper.ConfigurationProvider)
                        .AsNoTracking()
                        .OrderByDescending(x => x.DateCreated)
                        .Where(x => x.DateCreated >= checkParams.MinDate && x.DateCreated <= checkParams.MaxDate);

            return(await PageList <CheckeDto> .CreateAsync(query, checkParams.PageNumber, checkParams.PageSize));
        }
Exemplo n.º 26
0
        public async Task <PageList <User> > GetUsers(UserParams userParams)
        {
            var loginUser = await this.GetUser(userParams.UserId);

            var users = _context.Users.Include(p => p.Photos).AsQueryable();

            users = users.Where(u => u.Gender != loginUser.Gender);

            return(await PageList <User> .CreateAsync(users, userParams.CurrentPage, userParams.PageSize));
        }
Exemplo n.º 27
0
        public async Task <PageList <Party> > GetHistoryList(ParaParty para)
        {
            var today = System.DateTime.Today;
            var lists = _db.Party
                        .Where(p => p.PartyDate < today)
                        .OrderByDescending(p => p.PartyDate)
                        .AsQueryable();

            return(await PageList <Party> .CreateAsync(lists, para.PageNumber, para.PageSize));
        }
Exemplo n.º 28
0
        public async Task <IActionResult> GetMovieList(int page = 1)
        {
            if (_context.Movies.Count() == 0)
            {
                return(View("MovieList", new PageList <Movie>(new List <Movie>(), 1, 1, CountOnPage)));
            }
            page = Math.Clamp(page, 1, (int)Math.Ceiling(_context.Movies.Count() / (double)CountOnPage));
            var pageList = await PageList <Movie> .CreateAsync(_context.Movies.Include(m => m.Author), page, CountOnPage);

            return(View("MovieList", pageList));
        }
        public async Task <PageList <InventoryTransaction> > GetTransactionsByInventoryId(int id,
                                                                                          TransactionParams transactionParams)
        {
            var transactionQuery = _dbContext.InventoryTransactions
                                   .Include(t => t.TransactionType)
                                   .Where(t => t.IsArchived == false)
                                   .Where(t => t.Inventory.Id == id).AsQueryable();

            return(await PageList <InventoryTransaction> .CreateAsync(transactionQuery, transactionParams.PageNumber,
                                                                      transactionParams.PageSize));
        }
Exemplo n.º 30
0
        public async Task <BookingPage> GetBookingBySalesUnitIDAsync(int?salesUnitId, int?PageIndex, int?PageSize)
        {
            //validate parameters
            if (salesUnitId == null)
            {
                throw new ArgumentNullException();
            }
            //Set default values if not specified
            if (PageIndex == null)
            {
                PageIndex = 1;
            }
            if (PageSize == null)
            {
                PageSize = 1;
            }

            //Define the date duration for quering the data
            DateTime dtStart = new DateTime(2016, 1, 1);
            DateTime dtEnd   = new DateTime(2016, 3, 31);

            //Linq query to get list of bookings related to the sales unit
            var fullInfoList = from b in _context.Bookings
                               join sItem in _context.Ships on b.ShipId equals sItem.Id
                               join soUnit in _context.SalesUnits on sItem.SalesUnitId equals soUnit.Id
                               where sItem.SalesUnitId.Equals(salesUnitId) && b.BookingDate.Date >= dtStart.Date && b.BookingDate.Date <= dtEnd.Date
                               orderby b.BookingDate descending
                               select new UIBooking()
            {
                Id          = b.Id,
                Currency    = soUnit.Currency,
                BookingDate = b.BookingDate,
                Price       = b.Price,
                ShipName    = sItem.Name
            };
            //initialize an object of class helper to select only one page of the result
            var pageList = new PageList <UIBooking>();
            //Get a page of result asynchrounosly
            await pageList.CreateAsync(fullInfoList, PageIndex.Value, PageSize.Value);

            //if page index is greater than the total page count
            if (pageList.PageCount < PageIndex)
            {
                throw new IndexOutOfRangeException();
            }

            //return the specific page of result
            return(new BookingPage()
            {
                TotalCount = pageList.TotalCount,
                PageCount = pageList.PageCount,
                BookingList = pageList.ToList()
            });
        }