// GET: List/Edit/5 public async Task <IActionResult> Edit(int?id) { var user = await _userManager.GetUserAsync(HttpContext.User); if (id == null) { return(NotFound()); } var movielistList = await _context.MovieList.Include(m => m.Movie).Include(m => m.List).Where(m => m.ListId == id).ToListAsync(); var viewModel = new MovieListEditViewModel() { AllMovies = await _context.Movie.Where(m => m.User == user).ToListAsync(), MovieList = movielistList, SelectedMovies = movielistList.Select(ml => ml.MovieId).ToList(), List = await _context.List.FindAsync(id), }; if (viewModel.AllMovieOptions == null) { return(NotFound()); } if (viewModel.MovieList == null) { return(NotFound()); } return(View(viewModel)); }
public async Task <IActionResult> Edit(int id, MovieListEditViewModel viewModel) { var user = await _userManager.GetUserAsync(HttpContext.User); if (id != viewModel.List.ListId) { return(NotFound()); } ModelState.Remove("List.UserId"); ModelState.Remove("List.User"); ModelState.Remove("Movie.User"); ModelState.Remove("Movie.Title"); ModelState.Remove("Movie.Description"); ModelState.Remove("Movie.Director"); ModelState.Remove("Movie.UserId"); if (ModelState.IsValid) { try { var moviesInList = _context.MovieList.Where(mIL => mIL.ListId == id).ToList(); foreach (var originalMovie in moviesInList) { var originalMovieId = originalMovie.MovieId; var movieInSelectedList = viewModel.SelectedMovies.Find(mISL => mISL == originalMovieId); if (movieInSelectedList == 0) { _context.MovieList.Remove(originalMovie); } } foreach (var selectedMovie in viewModel.SelectedMovies) { var movieInOriginalList = moviesInList.Find(m => m.MovieId == selectedMovie); if (movieInOriginalList == null) { var SelectedMovieInstance = new MovieList { ListId = id, MovieId = selectedMovie }; _context.MovieList.Add(SelectedMovieInstance); } } viewModel.List.UserId = user.Id; _context.Update(viewModel.List); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ListExists(viewModel.List.ListId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(viewModel.List)); }