コード例 #1
0
        public async Task <AddMovieCommandResult> Handle(AddMovieCommand request, CancellationToken cancellationToken)
        {
            var director = await _directorRepository.GetDirectorAsync(request.Director, cancellationToken);

            if (director is null)
            {
                director = new Director {
                    FullName = request.Director
                };
                await _directorRepository.AddDirectorAsync(director, cancellationToken);
            }

            var movie = new Movie
            {
                PublishYear = request.PublishYear,
                BoxOffice   = request.BoxOffice,
                ImdbRate    = request.ImdbRate,
                Name        = request.Name,
                Director    = director
            };

            await _movieRepository.AddMovieAsync(movie, cancellationToken);

            await _db.SaveChangesAsync(cancellationToken);

            await _channel.AddToChannelAsync(new MovieAdded { MovieId = movie.Id }, cancellationToken);

            return(new AddMovieCommandResult {
                MovieId = movie.Id
            });
        }