private Movie GetMovie(MovieActivatedEvent movieActivatedEvent)
        {
            Movie movie = new Movie
            {
                Description      = movieActivatedEvent.Description,
                Name             = movieActivatedEvent.Name,
                OriginalName     = movieActivatedEvent.OriginalName,
                PosterUrl        = movieActivatedEvent.PosterUrl,
                TotalMinute      = movieActivatedEvent.TotalMinute,
                MovieId          = movieActivatedEvent.MovieId,
                ConstructionYear = movieActivatedEvent.ConstructionYear
            };

            var identityEvent = movieActivatedEvent.Identity;

            Indexes.MovieIdentity movieIdentity = new Indexes.MovieIdentity
            {
                VisionEntryDate      = identityEvent.VisionEntryDate,
                BookAuthors          = GetActors(identityEvent.BookAuthors),
                Producers            = GetActors(identityEvent.Producers),
                Composers            = GetActors(identityEvent.Composers),
                Scenarists           = GetActors(identityEvent.Scenarists),
                PhotographyDirectors = GetActors(identityEvent.PhotographyDirectors),
                Directors            = GetActors(identityEvent.Directors),
                Types     = GetTypes(identityEvent.Types),
                Countries = GetCountries(identityEvent.Countries)
            };

            movie.Identity = movieIdentity;

            movie.Actors = GetActors(movieActivatedEvent.Actors);
            return(movie);
        }
        public void InsertMovie(string payload)
        {
            MovieActivatedEvent movieActivatedEvent = JsonConvert.DeserializeObject <MovieActivatedEvent>(payload);

            var movie = GetMovie(movieActivatedEvent);

            _elasticClient.IndexDocument(movie);
        }
        public void UpdateMovie(string movieUpdatedEvent)
        {
            MovieActivatedEvent movieActivatedEvent = JsonConvert.DeserializeObject <MovieActivatedEvent>(movieUpdatedEvent);

            var searchResponse = _elasticClient
                                 .Search <Indexes.Movie>(s => s.Query(q =>
                                                                      q.Raw(GetMovieByIdQueryUrl(movieActivatedEvent.MovieId))));

            if (!searchResponse.Hits.Any())
            {
                return;
            }

            string id           = searchResponse.Hits.ToList()[0].Id;
            var    updatedMovie = GetMovie(movieActivatedEvent);

            _elasticClient.Update(DocumentPath <Movie>
                                  .Id(id),
                                  u => u
                                  .Index("movies")
                                  .DocAsUpsert(true)
                                  .Doc(updatedMovie));
        }