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