public async Task <IActionResult> Edit(string id) { try { AuthorizeHelper.Authorize(this.HttpContext, "Editor", this.GetType().Name, "Edit", "movie"); GetMovieModel getMovieModel = await _moviemindAPIService.GetModel <GetMovieModel>(id, "Movies"); List <GetGenreModel> getGenreModels = await _moviemindAPIService.GetModels <GetGenreModel>("genres"); List <GetDirectorModel> getDirectorModels = await _moviemindAPIService.GetModels <GetDirectorModel>("directors"); PutMovieModel putMovieModel = new PutMovieModel { Name = getMovieModel.Name, Year = getMovieModel.Year, Description = getMovieModel.Description, OverallRating = getMovieModel.OverallRating, Duration = getMovieModel.Duration, DirectorId = getMovieModel.DirectorId, Director = getMovieModel.Director, GenreId = getMovieModel.GenreId, Genre = getMovieModel.Genre }; ViewBag.Genres = getGenreModels; ViewBag.Directors = getDirectorModels; return(View(putMovieModel)); } catch (MovieMindException e) { return(ErrorHelper.HandleError(e)); } }
public async Task <IActionResult> PutMovie(string id, PutMovieModel putMovieModel) { try { if (!Guid.TryParse(id, out Guid movieId)) { throw new GuidException("Invalid id", this.GetType().Name, "PutMovie", "400"); } await _movieRepository.PutMovie(id, putMovieModel); return(NoContent()); } catch (MovieMindException e) { if (e.MovieMindError.Status.Equals("404")) { return(NotFound(e.MovieMindError)); } else { return(BadRequest(e.MovieMindError)); } } }
public async Task PutMovie(string id, PutMovieModel putMovieModel) { Movie movie = await _context.Movies.FirstOrDefaultAsync(x => x.Id == Guid.Parse(id)); if (movie == null) { throw new EntityException("Movie not found", this.GetType().Name, "PutMovie", "404"); } Director director = await _context.Directors.FirstOrDefaultAsync(x => x.Id == putMovieModel.DirectorId); if (director == null) { throw new EntityException("Director not found", this.GetType().Name, "PutMovie", "404"); } Genre genre = await _context.Genres.FirstOrDefaultAsync(x => x.Id == putMovieModel.GenreId); if (genre == null) { throw new EntityException("Genre not found", this.GetType().Name, "PutMovie", "404"); } try { movie.Name = putMovieModel.Name; movie.Year = putMovieModel.Year; movie.OverallRating = putMovieModel.OverallRating; movie.Duration = putMovieModel.Duration; movie.Description = putMovieModel.Description; movie.GenreId = putMovieModel.GenreId; movie.Genre = genre; movie.DirectorId = putMovieModel.DirectorId; movie.Director = director; await _context.SaveChangesAsync(); } catch (MovieMindException) { throw; } catch (Exception e) { throw new DatabaseException(e.InnerException.Message, this.GetType().Name, "PutMovie", "400"); } }
[ValidateAntiForgeryToken] // Prevents XSRF/CSRF attacks public async Task <IActionResult> Edit(string id, PutMovieModel putMovieModel) { try { AuthorizeHelper.Authorize(this.HttpContext, "Editor", this.GetType().Name, "Edit", "movie"); if (ModelState.IsValid) { await _moviemindAPIService.PutModel <PutMovieModel>(id, putMovieModel, "Movies"); //delete (override) previous relationships if (putMovieModel.ActorIds != null) { List <GetActorMovieModel> getActorMovieModels = await _moviemindAPIService.GetModels <GetActorMovieModel>("ActorMovies"); List <GetActorMovieModel> getActorMovieModelsToDelete = getActorMovieModels.Where(x => x.MovieId == Guid.Parse(id)).ToList(); foreach (GetActorMovieModel getActorMovieModel in getActorMovieModelsToDelete) { await _moviemindAPIService.DeleteModel(getActorMovieModel.Id.ToString(), "ActorMovies"); } //put in new relationships foreach (Guid actorId in putMovieModel.ActorIds) { await _moviemindAPIService.PostModel <PostActorMovieModel, GetActorMovieModel>(new PostActorMovieModel { ActorId = actorId, MovieId = Guid.Parse(id) }, "ActorMovies"); } } return(Redirect("/Movies/Details/" + id.ToString())); } return(View(putMovieModel)); } catch (MovieMindException e) { return(ErrorHelper.HandleError(e, this.View(putMovieModel))); } }