示例#1
0
        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);
        }
示例#2
0
 private async Task InsertGenreMovies(MovieUpsertRequest req, Movie movie)
 {
     foreach (var genreId in req.Genres)
     {
         await _genreMovieRepo.InsertAsync(new GenreMovie
         {
             GenreId = genreId,
             Movie   = movie
         });
     }
 }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }