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); }
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; }