private async Task <bool> ClearGenreMoviesAsync(MovieUpsertRequest req, Movie movie) { List <GenreMovie> deletableGenreMovies = movie.GenreMovies.Where(x => !req.Genres.Contains(x.GenreId)).ToList(); foreach (var deletableGenreMovie in deletableGenreMovies) { await _genreMovieRepo.DeleteAsync(deletableGenreMovie.Id); } return(true); }
private async Task InsertGenreMovies(MovieUpsertRequest req, Movie movie) { foreach (var genreId in req.Genres) { await _genreMovieRepo.InsertAsync(new GenreMovie { GenreId = genreId, Movie = movie }); } }
public async Task <MovieDto> InsertAsync(MovieUpsertRequest req) { var movie = _mapper.Map <Movie>(req); await _movieRepo.InsertAsync(movie); await InsertGenreMovies(req, movie); await _unit.SaveAsync(); var dto = _mapper.Map <MovieDto>(movie); return(dto); }
private async Task <bool> UpdateGenreMovieAsync(int id, MovieUpsertRequest req, Movie movie) { movie = await _unit.Movies.GetByIdWithGenresAsync(id); foreach (var genreId in req.Genres) { GenreMovie genreMovie = movie.GenreMovies.FirstOrDefault(x => x.GenreId == genreId); if (genreMovie == null) { await _genreMovieRepo.InsertAsync(new GenreMovie { MovieId = id, GenreId = genreId }); } } return(true); }
public async Task <MovieDto> UpdateAsync(int id, MovieUpsertRequest req) { Movie movie = _mapper.Map <Movie>(req); movie.Id = id; await _unit.Movies.UpdateAsync(movie, id); await UpdateGenreMovieAsync(id, req, movie); movie = await _movieRepo.GetByIdWithGenresAsync(id); await ClearGenreMoviesAsync(req, movie); await _unit.SaveAsync(); var dto = _mapper.Map <MovieDto>(movie); return(dto); }