public ActionResult AddAudiobooks(int id, AddAudiobookToShelfViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            if (model.SelectedShelfId != id)
            {
                ModelState.AddModelError("", "ID Mismatch, please try again.");
                return(View(model));
            }

            var service       = CreateBookshelfService();
            var audiobooks    = new ApplicationDbContext().Audiobooks.ToList();
            var audiobookList = new SelectList(audiobooks.Select(item => new SelectListItem
            {
                Text  = item.Title,
                Value = item.AudiobookId.ToString()
            }).ToList(), "Value", "Text");


            if (service.AddAudiobookToShelf(model))
            {
                TempData["SaveResult"] = "Your audiobook was added to the shelf.";
                return(RedirectToAction("Details", new { id = model.SelectedShelfId }));
            }

            ModelState.AddModelError("", "Your audiobook could not be added.");
            return(View(model));
        }
        //Audiobooks to Shelves
        //TODO: Setup service methods for Audiobooks
        //Working with ShelfRecordKeeper entity to connect Audiobooks to Shelves
        public bool AddAudiobookToShelf(AddAudiobookToShelfViewModel model)
        {
            using (var ctx = new ApplicationDbContext())
            {
                var shelfToAddBookTo =
                    ctx
                    .Bookshelves
                    .Single(s => s.ShelfId == model.SelectedShelfId && s.UserId == _userId);


                var audiobookToAddToShelf =
                    ctx
                    .Audiobooks
                    .Single(b => b.AudiobookId == model.SelectedAudiobookId);

                var shelfAudioRecordToCreate = new ShelfAudioRecordKeeper
                {
                    ShelfId     = shelfToAddBookTo.ShelfId,
                    AudiobookId = audiobookToAddToShelf.AudiobookId
                };

                ctx.ShelfAudioRecords.Add(shelfAudioRecordToCreate);

                return(ctx.SaveChanges() == 1);
            }
        }
        //TODO: ADD VIEWS FOR AUDIOBOOKS!!!
        //AUDIOBOOKS
        // GET: AudiobooksToAdd
        public ActionResult AddAudiobooks(int id)
        {
            var svc   = CreateBookshelfService();
            var model = svc.GetBookshelfById(id);

            var audiobooks    = new ApplicationDbContext().Audiobooks.ToList();
            var audiobookList = new SelectList(audiobooks.Select(item => new SelectListItem
            {
                Text  = item.Title,
                Value = item.AudiobookId.ToString()
            }).ToList(), "Value", "Text");

            var viewModel = new AddAudiobookToShelfViewModel()
            {
                SelectedShelfId    = model.ShelfId,
                AudiobookListItems = audiobookList,
            };

            return(View(viewModel));
        }