//----------------------------------------------------------------//

        public async Task <People> SavePeopleAsync(string peopleId)
        {
            PeopleDto peopleDto = await _loadDataService.LoadPeople(peopleId);

            People people = CinemaDtoMapper.MapPeople(peopleDto);

            if (people != null)
            {
                DbCommandResult?result = await _peopleCommad.SaveOrUpdateAsync(_peopleQuery, people);

                if (result.HasValue)
                {
                    Logger.Log.Info($"People ({people.Id} - {people.Name}) was {result.ToString()}");
                }
            }
            return(people);
        }
        //----------------------------------------------------------------//

        public async Task <Cast> SaveMovieCastAsync(CastDto castDto, Movie movie)
        {
            Cast cast = CinemaDtoMapper.MapCast(castDto);

            cast.Movie   = movie;
            cast.MovieId = movie.Id;

            if (castDto.PeopleId != null)
            {
                People people = await SavePeopleAsync(castDto.PeopleId);

                cast.People   = people;
                cast.PeopleId = people?.Id;
            }

            if (await _castCommand.SaveIfNotExist(_castQuery, cast))
            {
                Logger.Log.Info($"Cast {cast.Id} was saved");
            }
            return(cast);
        }
        //----------------------------------------------------------------//

        public async Task FeedMovieWithSubEntities(int movieId)
        {
            Task <MovieDto> t_movie = _loadDataService.LoadMovie(movieId.ToString());
            Movie           movie   = CinemaDtoMapper.MapMovie(t_movie.Result);
            List <Task>     tasks   = new List <Task>();

            //--save genres--companies--countries if not exists
            Task <List <Genre> >             t_genres    = SaveOrUpdateCollectionsAsync(movie.Genres, _genreCommand, _genreQuery, g => g.genre);
            Task <List <ProductionCompany> > t_companies = SaveOrUpdateCollectionsAsync(movie.ProductionCompanies, _companyCommand, _companyQuery, c => c.Name);
            Task <List <ProductionCountry> > t_countries = SaveOrUpdateCollectionsAsync(movie.ProductionCountries, _countryCommand, _countryQuery, c => c.Name);

            //bind movie with genres--companies-countries
            await SaveMovie(movie);

            tasks.Add(SaveMovieGenresAsync(movie, await t_genres));
            tasks.Add(SaveMovieCompanies(movie, await t_companies));
            tasks.Add(SaveMovieCountriesAsync(movie, await t_countries));

            //credits
            tasks.Add(SaveMovieCreditsByMovieAsync(movie));
            await Task.WhenAll(tasks);
        }