//----------------------------------------------------------------// 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); }