public async Task <bool> AddRoleToMovieAsync(AddMovieRoleInputModel input) { if (!await dbContext.Movies.AnyAsync(movie => movie.Name == input.Movie)) { return(false); } if (!await dbContext.Artists.AnyAsync(artist => artist.FullName == input.Artist)) { return(false); } var movieFromDb = await dbContext.Movies.SingleOrDefaultAsync(movie => movie.Name == input.Movie); var artistFromDb = await dbContext.Artists.SingleOrDefaultAsync(artist => artist.FullName == input.Artist); if (await dbContext.MovieRoles.AnyAsync(movieRole => movieRole.ArtistId == artistFromDb.Id && movieRole.MovieId == movieFromDb.Id)) { return(false); } var movieRoleForDb = mapper.Map <AddMovieRoleInputModel, MovieRole>(input); movieRoleForDb.Movie = movieFromDb; movieRoleForDb.Artist = artistFromDb; await dbContext.MovieRoles.AddAsync(movieRoleForDb); await dbContext.SaveChangesAsync(); return(true); }
public async Task <IActionResult> AddRole(AddMovieRoleInputModel input) { if (!ModelState.IsValid) { return(View(input)); } if (!await movieService.AddRoleToMovieAsync(input)) { return(View(input)); } return(Redirect(redirectMoviesAllAndOrder)); }
public async Task AddRoleToMovieShouldAddRoleProperly() { var genre1 = new Genre { Name = "genre1" }; var artist1 = new Artist { FullName = "name1", Biography = "biography1", BirthDate = DateTime.Parse("25 July 2019"), PhotoLink = "photo1", }; var movie1 = new Movie { Name = "movie1", ReleaseDate = DateTime.Parse("24 July 2019"), Description = "description1", Length = 160, Genre = genre1, Director = artist1, CoverImageLink = "cover1", TrailerLink = "trailer1", }; await dbContext.Genres.AddAsync(genre1); await dbContext.Artists.AddAsync(artist1); await dbContext.Movies.AddAsync(movie1); await dbContext.SaveChangesAsync(); var movieService = new MovieService(dbContext, reviewService.Object, watchlistService.Object, mapper); var input = new AddMovieRoleInputModel { Artist = "name1", Movie = "movie1", CharacterPlayed = "character1", }; var actualResult = await movieService.AddRoleToMovieAsync(input); Assert.True(actualResult); Assert.True(dbContext.MovieRoles.Count() == 1); Assert.Equal(movie1, dbContext.MovieRoles.First().Movie); Assert.Equal(artist1, dbContext.MovieRoles.First().Artist); Assert.Equal("character1", dbContext.MovieRoles.First().CharacterPlayed); }
public async Task AddRoleToMovieShouldReturnFalseIfProvidedArtistOrMovieNameIsInvalid(string movieName, string artistName, bool expectedResult) { var genre1 = new Genre { Name = "genre1" }; var artist1 = new Artist { FullName = "name1", Biography = "biography1", BirthDate = DateTime.Parse("25 July 2019"), PhotoLink = "photo1", }; var artist2 = new Artist { FullName = "name2", Biography = "biography2", BirthDate = DateTime.Parse("24 July 2019"), PhotoLink = "photo2", }; var movie1 = new Movie { Name = "movie1", ReleaseDate = DateTime.Parse("24 July 2019"), Description = "description1", Length = 160, Genre = genre1, Director = artist1, CoverImageLink = "cover1", TrailerLink = "trailer1", }; var movieRole = new MovieRole { Movie = movie1, Artist = artist2, CharacterPlayed = "something", }; await dbContext.Genres.AddAsync(genre1); await dbContext.Artists.AddAsync(artist1); await dbContext.Artists.AddAsync(artist2); await dbContext.Movies.AddAsync(movie1); await dbContext.MovieRoles.AddAsync(movieRole); await dbContext.SaveChangesAsync(); var movieService = new MovieService(dbContext, reviewService.Object, watchlistService.Object, mapper); var input = new AddMovieRoleInputModel { Artist = artistName, Movie = movieName, CharacterPlayed = "character1", }; var actualResult = await movieService.AddRoleToMovieAsync(input); Assert.True(actualResult == expectedResult); }