public ActionResult Edit(SeriesViewModel model) { var selectedGenres = model.Genres.Where(x => x.IsChecked).Select(x => x.Display).ToList(); try { Series series = db.Series.Find(model.Series.SeriesId); if (TryUpdateModel(series)) { var toDelete = db.SeriesGenres.Where(x => selectedGenres.Contains(x.GenreName) == false && x.SeriesId == series.SeriesId).ToList(); foreach (var item in toDelete) { db.SeriesGenres.Remove(item); } var alreadyIn = db.SeriesGenres.Where(x => selectedGenres.Contains(x.GenreName) == true && x.SeriesId == series.SeriesId).ToList(); var genresAlreadyIn = alreadyIn.Select(x => x.GenreName).ToList(); foreach (var genre in selectedGenres) { if (genresAlreadyIn.Contains(genre)) continue; SeriesGenre seriesGenre = new SeriesGenre() { SeriesId = model.Series.SeriesId, GenreName = genre }; db.SeriesGenres.Add(seriesGenre); } foreach (var chr in db.Characters.Where(x => x.SeriesId == model.Series.SeriesId)) { db.Characters.Remove(chr); } List<Role> characers = GetCharacters(model.Series.SeriesId, model.ActorList); foreach (Role role in characers) { db.Characters.Add(role); } series.Title = model.Series.Title; series.NumberOfEpisodes = model.Series.NumberOfEpisodes; series.NumberOfSeasons = model.Series.NumberOfSeasons; db.SaveChanges(); } else { return RedirectToAction("Show", "Series", new { @id = model.Series.SeriesId}); } } catch (Exception e) { return RedirectToAction("Show", "Series", new { @id = model.Series.SeriesId }); } return RedirectToAction("Show", "Series", new { @id = model.Series.SeriesId }); }
public ActionResult New(SeriesViewModel model) { try { if (ModelState.IsValid) { db.Series.Add(model.Series); var selectedGenres = model.Genres.Where(x => x.IsChecked).Select(x => x.Display).ToList(); foreach (var genreName in selectedGenres) { SeriesGenre seriesGenre = new SeriesGenre { SeriesId = model.Series.SeriesId, GenreName = genreName }; //seriesGenre.Genre = genre; //seriesGenre.Series = model.Series; db.SeriesGenres.Add(seriesGenre); } List <Role> characters = GetCharacters(model.Series.SeriesId, model.ActorList); foreach (Role role in characters) { db.Characters.Add(role); } db.SaveChanges(); TempData["message"] = "The series has been added!"; return RedirectToAction("Index"); } else { return View(model); } } catch (Exception e) { return View(model); } }