public ActionResult ViewSingleBook(int id)
 {
     Book targetBook = null;
     string authorNames = null;
     using (GaryBookstoreEntities dbc = new GaryBookstoreEntities())
     {
         targetBook = dbc.Books.Include("Inventory").SingleOrDefault(b => b.BookId == id);
         List<BookAuthor> authors = dbc.BookAuthors.Where(b => b.BookId == id).ToList();
         for (int i = 0; i < authors.Count; i++)
         {
             BookAuthor author = authors[i];
             authorNames += dbc.Authors.SingleOrDefault(a => a.Id == author.AuthorId).Name;
             if (i < authors.Count() - 1)
             {
                 authorNames += ", ";
             }
         }
     }
     if (targetBook == null)
     {
         return View("Error");
     }
     else
     {
         ViewData["authors"] = authorNames;
         return View("BookDetails", targetBook);
     }
 }
 public ActionResult Index()
 {
     List<Book> featuredBooks = new List<Book>();
     List<int> ids = new List<int>(new int[] { 96, 110, 515 });
     using (GaryBookstoreEntities dbc = new GaryBookstoreEntities())
     {
         foreach (var id in ids)
         {
             Book book = dbc.Books.SingleOrDefault(b => b.BookId == id);
             featuredBooks.Add(book);
         }
     }
     return View(featuredBooks);
 }
 public ActionResult ViewBooks(int pageNumber)
 {
     List<Book> allBooks = null;
     int size = 0;
     using (GaryBookstoreEntities dbc = new GaryBookstoreEntities())
     {
         size = dbc.Books.Count();
         if (size <= (pageNumber - 1) * bookPerPage)
         {
             return View("Error");
         }
         int max = Math.Min(size, pageNumber * bookPerPage);
         allBooks = dbc.Books.Include("Inventory").Where(b => b.BookId >= (pageNumber - 1) * bookPerPage + 1 &&
             b.BookId <= max).ToList();
     }
     ViewData["maxPage"] = (size - 1) / bookPerPage + 1;
     ViewData["curPage"] = pageNumber;
     return View("BookList", allBooks);
 }