Exemplo n.º 1
0
        public PagedBooksDto GetAllWithPaging(int page, int itemsPerPage, string order, string criteria)
        {
            var allItemsCount = this.books.All().Count();
            var totalPages    = (int)Math.Ceiling(allItemsCount / (decimal)itemsPerPage);
            var itemsToSkip   = (page - 1) * itemsPerPage;

            var allBooks = this.books.All();

            if (!string.IsNullOrEmpty(criteria))
            {
                allBooks = allBooks.Where(x => x.Title.Contains(criteria) || x.Summary.Contains(criteria));
            }

            if (order == "newest")
            {
                allBooks = allBooks.OrderByDescending(x => x.CreatedOn);
            }
            else if (order == "top")
            {
                allBooks = allBooks.OrderByDescending(m => ((float)m.Ratings.Sum(r => r.Value) / m.Ratings.Count()));
            }

            allBooks = allBooks
                       .Skip(itemsToSkip)
                       .Take(itemsPerPage);

            var dto = new PagedBooksDto
            {
                AllItemsCount = allItemsCount,
                Books         = allBooks,
                TotalPages    = totalPages
            };

            return(dto);
        }
Exemplo n.º 2
0
        public PagedBooksDto GetAllWithPaging(int page, int itemsPerPage, string order, string criteria)
        {
            var allItemsCount = this.books.All().Count();
            var totalPages = (int)Math.Ceiling(allItemsCount / (decimal)itemsPerPage);
            var itemsToSkip = (page - 1) * itemsPerPage;

            var allBooks = this.books.All();

            if (!string.IsNullOrEmpty(criteria))
            {
                allBooks = allBooks.Where(x => x.Title.Contains(criteria) || x.Summary.Contains(criteria));
            }

            if (order == "newest")
            {
                allBooks = allBooks.OrderByDescending(x => x.CreatedOn);
            }
            else if (order == "top")
            {
                allBooks = allBooks.OrderByDescending(m => ((float)m.Ratings.Sum(r => r.Value) / m.Ratings.Count()));
            }

            allBooks = allBooks
                     .Skip(itemsToSkip)
                     .Take(itemsPerPage);

            var dto = new PagedBooksDto
            {
                AllItemsCount = allItemsCount,
                Books = allBooks,
                TotalPages = totalPages
            };

            return dto;
        }