[ValidateAntiForgeryToken] // Prevents XSRF/CSRF attacks public async Task <IActionResult> Create(PostMovieModel postMovieModel) { try { AuthorizeHelper.Authorize(this.HttpContext, "Editor", this.GetType().Name, "Create", "movie"); if (ModelState.IsValid) { GetMovieModel getMovieModel = await _moviemindAPIService.PostModel <PostMovieModel, GetMovieModel>(postMovieModel, "Movies"); //put in new relationships foreach (Guid actorId in postMovieModel.ActorIds) { await _moviemindAPIService.PostModel <PostActorMovieModel, GetActorMovieModel>(new PostActorMovieModel { ActorId = actorId, MovieId = getMovieModel.Id }, "ActorMovies"); } return(Redirect("/Movies/Details/" + getMovieModel.Id.ToString())); } return(View(postMovieModel)); } catch (MovieMindException e) { return(ErrorHelper.HandleError(e, this.View(postMovieModel))); } }
public async Task <ActionResult <GetMovieModel> > PostMovie(PostMovieModel postMovieModel) { try { GetMovieModel movie = await _movieRepository.PostMovie(postMovieModel); return(CreatedAtAction(nameof(GetMovie), new { id = movie.Id }, movie)); } catch (DatabaseException e) { return(BadRequest(e.MovieMindError)); } }
public async Task <GetMovieModel> PostMovie(PostMovieModel postMovieModel) { Director director = await _context.Directors.FirstOrDefaultAsync(x => x.Id == postMovieModel.DirectorId); if (director == null) { throw new EntityException("Director not found", this.GetType().Name, "PostMovie", "404"); } Genre genre = await _context.Genres.FirstOrDefaultAsync(x => x.Id == postMovieModel.GenreId); if (genre == null) { throw new EntityException("Genre not found", this.GetType().Name, "PostMovie", "404"); } try { EntityEntry <Movie> result = await _context.Movies.AddAsync(new Movie { Name = postMovieModel.Name, Year = postMovieModel.Year, OverallRating = postMovieModel.OverallRating, Duration = postMovieModel.Duration, Description = postMovieModel.Description, DirectorId = postMovieModel.DirectorId, Director = director, GenreId = postMovieModel.GenreId, Genre = genre }); await _context.SaveChangesAsync(); return(await GetMovie(result.Entity.Id.ToString())); } catch (MovieMindException) { throw; } catch (Exception e) { throw new DatabaseException(e.InnerException.Message, this.GetType().Name, "PostMovie", "400"); } }