public void Initialize() { using (JMoviesEntities entities = new JMoviesEntities()) { List <FWEntities.ResultConfiguration> resultConfigurations = new List <FWEntities.ResultConfiguration>(); foreach (ResultConfiguration resultConfiguration in entities.ResultConfiguration.Include(e => e.ResultMessages)) { if (resultConfiguration.ResultMessages != null) { resultConfigurations.Add(new FWEntities.ResultConfiguration { ErrorCode = resultConfiguration.ErrorCode, RedirectionParameter = resultConfiguration.RedirectionParameter, RedirectionType = resultConfiguration.RedirectionType, ResultMessages = resultConfiguration.ResultMessages.Select(e => new FWEntities.ResultMessage { Content = e.Content, Culture = e.Culture }).ToArray() }); } } this.resultConfigurations = resultConfigurations.ToArray(); } }
/// <summary> /// Gets Person information /// </summary> /// <param name="id">ID of the Person</param> /// <param name="person">Person instance to be populated</param> /// <param name="settings">Object containing Data Fetch settings</param> /// <returns>Person instance containing retreived information</returns> public Person GetPerson(long id, Person person, PersonDataFetchSettings settings) { using (JMoviesEntities entities = new JMoviesEntities()) { person = entities.Person.FirstOrDefault(e => e.ID == id); if (settings.MediaImagesFetchCount != 0 && person != null) { //fetch primary image person.PrimaryImage = entities.Image.FirstOrDefault(e => e.ID == person.PrimaryImageID); //fetch images int imageCount = settings.MediaImagesFetchCount; if (imageCount <= 0) { //default value imageCount = 5; } person.Photos = entities.Image.Where(e => e.PersonID == person.ID).Take(imageCount).ToArray(); } if (!settings.FetchImageContents && person != null) { RemoveImageContentsFromPerson(person); } return(person); } }
public bool IsValid(object[] values) { if (values != null && values.Length == 1) { SecureString username = values[0] as SecureString; bool isValid = true; if (username.Length < 6 || username.Length > 55) { isValid = false; } if (isValid) { using (JMoviesEntities entities = new JMoviesEntities()) { isValid = !entities.User.Any(e => e.UserName == username.ToPlainString()); } } return(isValid); } else { return(false); } }
public void InsertScrapedMovieTest() { IServiceProvider serviceProvider = DIHelper.Initialize(); ProductionDataFetchSettings productionDataFetchSettings = new FullProductionDataFetchSettings(); DbContextOptionsBuilder <JMoviesEntities> dbContextOptionsBuilder = new DbContextOptionsBuilder <JMoviesEntities>(); dbContextOptionsBuilder.UseLazyLoadingProxies(true); using (JMoviesEntities entities = new JMoviesEntities(dbContextOptionsBuilder.Options)) { long[] imdbIDs = new long[] { 1477834, 18652, 16624, 8269, 6958 }; foreach (long imdbID in imdbIDs) { //DBHelper.EmptyDB(entities); IIMDbDataProvider iMDbDataProvider = serviceProvider.GetRequiredService <IIMDbDataProvider>(); Movie movie = iMDbDataProvider.GetMovie(imdbID, productionDataFetchSettings); ProductionPersistanceManager.Persist(entities, movie); Movie savedMovie = entities.Production.SingleOrDefault(e => e.IMDbID == movie.IMDbID) as Movie; Assert.IsNotNull(savedMovie); Assert.AreEqual(movie.IMDbID, savedMovie.IMDbID); Assert.AreEqual(movie.Title, savedMovie.Title); } } }
private static void HandleAKAs(JMoviesEntities entities, Production production, Production savedProduction) { Movie movie = production as Movie; Movie savedMovie = savedProduction as Movie; if (movie != null && movie.AKAs != null) { foreach (AKA aka in movie.AKAs.ToArray()) { EntityEntry entry = null; bool saved = false; if (savedMovie != null) { AKA savedAKA = entities.AKA.FirstOrDefault(e => e.Name == aka.Name && e.Description == aka.Description && aka.ProductionID == savedMovie.ID); if (savedAKA != null) { aka.ID = savedAKA.ID; entry = CommonDBHelper.MarkEntityAsUpdated(entities, aka); saved = true; } } aka.ProductionID = production.ID; if (!saved) { aka.ID = CommonDBHelper.GetNewID <AKA>(entities, e => e.ID); entry = entities.AKA.Add(aka); } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); } } }
public void ExecuteAction(IServiceProvider serviceProvider, ref object request, ref BaseResponse response) { RegisterRequest requestMessage = request as RegisterRequest; RegisterResponse responseMessage = response as RegisterResponse; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) { using (JMoviesEntities entities = new JMoviesEntities()) { string salt = HashHelper.GenerateSalt(); string hash = HashHelper.Hash(HashTypeEnum.Sha512, requestMessage.Password, salt); User user = new User { Email = requestMessage.Email, Password = new Password { Hash = hash, HashType = HashTypeEnum.Sha512, ModifyDate = DateTime.Now, RetryCount = 0, Salt = salt }, RegistrationDate = DateTime.Now, UserName = requestMessage.Username.ToPlainString() }; entities.Password.Add(user.Password); entities.User.Add(user); entities.SaveChanges(); scope.Complete(); } } }
private static void HandleGenres(JMoviesEntities entities, Production production, Production savedProduction) { Movie movie = production as Movie; Movie savedMovie = savedProduction as Movie; if (movie != null && movie.Genres != null) { foreach (Genre genre in movie.Genres.ToArray()) { EntityEntry entry = null; bool saved = false; if (savedMovie != null) { Genre savedGenre = entities.Genre.FirstOrDefault(e => e.Identifier == genre.Identifier && genre.ProductionID == savedMovie.ID); if (savedGenre != null) { genre.ID = savedGenre.ID; entry = CommonDBHelper.MarkEntityAsUpdated(entities, genre); saved = true; } } genre.ProductionID = production.ID; if (!saved) { genre.ID = CommonDBHelper.GetNewID <Genre>(entities, e => e.ID); entry = entities.Genre.Add(genre); } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); } } }
private static void HandleRatings(JMoviesEntities entities, Production production, Production savedProduction) { if (production.Rating != null) { EntityEntry entry = null; production.Rating.DataSourceID = entities.DataSource.FirstOrDefault(e => e.Identifier == production.Rating.DataSource.Identifier).ID; production.Rating.DataSource = null; production.Rating.ProductionID = production.ID; production.Rating.Production = null; Rating existingRating = null; if (savedProduction != null) { existingRating = entities.Rating.FirstOrDefault(e => e.ProductionID == savedProduction.ID); } if (existingRating != null) { production.Rating.ID = existingRating.ID; entry = CommonDBHelper.MarkEntityAsUpdated(entities, production.Rating); } else { production.Rating.ID = CommonDBHelper.GetNewID <Rating>(entities, e => e.ID); entry = entities.Rating.Add(production.Rating); } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); } }
private static void HandleKeywords(JMoviesEntities entities, Production production, Production savedProduction) { Movie movie = production as Movie; Movie savedMovie = savedProduction as Movie; if (movie != null && movie.Keywords != null) { foreach (Keyword keyword in movie.Keywords.ToArray()) { EntityEntry entry = null; bool saved = false; if (savedMovie != null) { Keyword savedKeyword = entities.Keyword.FirstOrDefault(e => e.Identifier == keyword.Identifier && keyword.ProductionID == movie.ID); if (savedKeyword != null) { keyword.ID = savedKeyword.ID; entry = CommonDBHelper.MarkEntityAsUpdated(entities, keyword); saved = true; } } keyword.ProductionID = production.ID; if (!saved) { keyword.ID = CommonDBHelper.GetNewID <Keyword>(entities, e => e.ID); entry = entities.Keyword.Add(keyword); } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); } } }
private static void HandleCompanies(JMoviesEntities entities, Production production, Production savedProduction) { Movie movie = production as Movie; Movie savedMovie = savedProduction as Movie; if (movie != null && movie.ProductionCompanies != null) { foreach (Company company in movie.ProductionCompanies.ToArray()) { EntityEntry entry = null; bool saved = false; if (savedMovie != null) { Company savedCompany = entities.Company.FirstOrDefault(e => e.Name == company.Name && company.ProductionID == savedMovie.ID); if (savedCompany != null) { company.ID = savedCompany.ID; entry = CommonDBHelper.MarkEntityAsUpdated(entities, company); saved = true; } } company.ProductionID = production.ID; if (!saved) { company.ID = CommonDBHelper.GetNewID <Company>(entities, e => e.ID); entry = entities.Company.Add(company); } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); } movie.ProductionCompanies = null; } }
public static void Persist(JMoviesEntities entities, Person person) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = IsolationLevel.Serializable; options.Timeout = new TimeSpan(0, 10, 0); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { Person savedPerson = entities.Person.FirstOrDefault(e => e.IMDbID == person.IMDbID); bool saved = false; if (savedPerson != null) { person.ID = savedPerson.ID; saved = true; } else { person.ID = CommonDBHelper.GetNewID <Person>(entities, e => e.ID); } Person trimmedPerson = GetTrimmedPerson(person); if (!saved) { EntityEntry entry = entities.Person.Add(trimmedPerson); } entities.SaveChanges(); HandleImages(entities, person, savedPerson); CommonDBHelper.DetachAllEntries(entities); CommonDBHelper.MarkEntityAsUpdated(entities, trimmedPerson, new string[] { "PersonType", "PrimaryImage", "PrimaryImageID" }, true); entities.SaveChanges(); scope.Complete(); } }
public static EntityEntry MarkEntityAsUpdated(JMoviesEntities entities, object objectToMark, string[] excludedProperties = null, bool ignoreNulls = false) { PropertyInfo[] properties = objectToMark.GetType().GetProperties(); PropertyInfo idProperty = properties.FirstOrDefault(e => e.GetCustomAttribute <KeyAttribute>() != null); EntityEntry entry = AttachEntity(entities, objectToMark, idProperty); foreach (PropertyInfo property in properties) { if (property.GetCustomAttribute <NotMappedAttribute>() == null && property.GetCustomAttribute <ForeignKeyAttribute>() == null && (excludedProperties == null || !excludedProperties.Contains(property.Name))) { bool isModified = ignoreNulls || property.GetValue(objectToMark) != null; if (property.Name != idProperty.Name) { GetPropertyAccessor(entry, property).IsModified = isModified; } else { GetPropertyAccessor(entry, property).IsModified = false; } } } return(entry); }
public void ExecuteAction(IServiceProvider serviceProvider, ref object request, ref BaseResponse response) { GetImageContentsRequest requestMessage = request as GetImageContentsRequest; GetImageContentsResponse responseMessage = response as GetImageContentsResponse; using (JMoviesEntities entities = new JMoviesEntities()) { responseMessage.Image = entities.Image.FirstOrDefault(e => e.ID == requestMessage.ID); } }
public static long GetNewID <T>(JMoviesEntities entities, Func <T, long> keySelector) where T : class { long lastIndex = entities.Set <T>().OrderByDescending(keySelector).Select(keySelector).FirstOrDefault(); if (lastIndex == default(long)) { lastIndex = 0; } return(lastIndex + 1); }
private static void HandleTagLines(JMoviesEntities entities, Production production, Production savedProduction) { Movie movie = production as Movie; Movie savedMovie = savedProduction as Movie; if (savedMovie != null) { savedMovie.TagLines = entities.TagLine.Where(e => e.ProductionID == savedMovie.ID).ToArray(); entities.TagLine.RemoveRange(savedMovie.TagLines); } }
private static EntityEntry AttachEntity(JMoviesEntities entities, object objectToMark, PropertyInfo idProperty) { EntityEntry entry = entities.ChangeTracker.Entries().FirstOrDefault(e => e.Metadata.Name == objectToMark.GetType().FullName&& idProperty.GetValue(e.Entity).Equals(idProperty.GetValue(objectToMark))); if (entry != null) { entry.State = EntityState.Detached; } entry = entities.Attach(objectToMark); return(entry); }
public static void DetachAllEntries(JMoviesEntities entities) { var changedEntriesCopy = entities.ChangeTracker.Entries() .Where(e => e.State == EntityState.Added || e.State == EntityState.Modified || e.State == EntityState.Unchanged || e.State == EntityState.Deleted).ToList(); foreach (var entry in changedEntriesCopy) { entry.State = EntityState.Detached; } }
private static void HandleCountries(JMoviesEntities entities, Production production, Production savedProduction) { Movie movie = production as Movie; Movie savedMovie = savedProduction as Movie; if (movie != null && movie.Countries != null) { foreach (ProductionCountry productionCountry in movie.Countries.ToArray()) { EntityEntry entry = null; EntityEntry countryEntry = null; Country savedCountry = entities.Country.FirstOrDefault(e => e.Identifier == productionCountry.Country.Identifier); if (savedCountry != null) { productionCountry.Country.ID = savedCountry.ID; countryEntry = CommonDBHelper.MarkEntityAsUpdated(entities, productionCountry.Country); } else { productionCountry.Country.ID = CommonDBHelper.GetNewID <Country>(entities, e => e.ID); countryEntry = entities.Country.Add(productionCountry.Country); } entities.SaveChanges(); productionCountry.ProductionID = productionCountry.Production.ID; productionCountry.Production = null; productionCountry.CountryID = productionCountry.Country.ID; productionCountry.Country = null; ProductionCountry savedProductionCountry = null; if (savedMovie != null) { savedProductionCountry = entities.ProductionCountry.FirstOrDefault(e => e.ProductionID == savedMovie.ID && e.CountryID == productionCountry.CountryID); } if (savedProductionCountry != null) { productionCountry.ID = savedProductionCountry.ID; entry = CommonDBHelper.MarkEntityAsUpdated(entities, productionCountry); } else { CommonDBHelper.DetachAllEntries(entities); productionCountry.ID = CommonDBHelper.GetNewID <ProductionCountry>(entities, e => e.ID); entry = entities.ProductionCountry.Add(productionCountry); } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); } } }
private static void HandleCharacters(JMoviesEntities entities, Production production, Production savedProduction) { Movie movie = production as Movie; Movie savedMovie = savedProduction as Movie; if (movie != null && movie.Credits != null) { foreach (Credit credit in movie.Credits.ToArray()) { if (credit is ActingCredit) { ActingCredit actingCredit = credit as ActingCredit; foreach (Character character in actingCredit.Characters.ToArray()) { EntityEntry entry = null; bool saved = false; if (savedMovie != null) { if (savedMovie.Credits == null) { savedMovie.Credits = entities.Credit.Where(e => e.ProductionID == savedMovie.ID).ToArray(); } Character savedCharacter = null; if (savedMovie.Credits != null) { long[] existingCreditIDs = savedMovie.Credits.Where(x => x.RoleType == CreditRoleType.Acting).Select(x => x.ID).ToArray(); savedCharacter = entities.Character.FirstOrDefault(currentCharacter => existingCreditIDs.Contains(currentCharacter.CreditID) && currentCharacter.Name == character.Name && currentCharacter.IMDbID == character.IMDbID); } if (savedCharacter != null) { character.ID = savedCharacter.ID; entry = CommonDBHelper.MarkEntityAsUpdated(entities, character, new string[] { "CharacterType" }); saved = true; } } character.CreditID = actingCredit.ID; if (!saved) { character.ID = CommonDBHelper.GetNewID <Character>(entities, e => e.ID); entry = entities.Character.Add(character); } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); } } } } }
private static void HandleDataSources(JMoviesEntities entities, Production production, Production savedProduction) { EntityEntry entry = null; if (production.Rating != null) { if (entities.DataSource.FirstOrDefault(e => e.Identifier == production.Rating.DataSource.Identifier) == null) { entry = entities.DataSource.Add(production.Rating.DataSource); } } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); }
/// <summary> /// Gets Production Information iresspective of type /// </summary> /// <param name="id">ID of the production</param> /// <param name="settings">Object containing Data Fetch settings</param> /// <returns>Production instance containing retreived information</returns> public Production GetProduction(long id, ProductionDataFetchSettings settings) { using (JMoviesEntities entities = new JMoviesEntities()) { Production production = entities.Production.FirstOrDefault(e => e.ID == id); if (settings.MediaImagesFetchCount != 0 && production != null) { //fetch poster production.Poster = entities.Image.FirstOrDefault(e => e.ID == production.PosterID); //fetch images int imageCount = settings.MediaImagesFetchCount; if (imageCount <= 0) { //default value imageCount = 5; } production.MediaImages = entities.Image.Where(e => e.ProductionID == production.ID).Take(imageCount).ToArray(); } if (production is Movie) { Movie movie = production as Movie; int castCount = settings.CastFetchCount; if (castCount <= 0) { //default value castCount = 5; } movie.Credits = entities.Credit.Include(e => (e as ActingCredit).Characters) .Where(e => e.ProductionID == production.ID).Take(castCount).ToArray(); if (movie.Credits != null) { foreach (Credit credit in movie.Credits) { credit.Person = entities.Person.FirstOrDefault(e => e.ID == credit.PersonID); credit.Person.PrimaryImage = entities.Image.FirstOrDefault(e => e.ID == credit.Person.PrimaryImageID); } } movie.Genres = entities.Genre.Where(e => e.ProductionID == production.ID).ToArray(); } CleanupImageContents(settings, production); return(production); } }
public static void EmptyDB(JMoviesEntities entities) { entities.AKA.RemoveRange(entities.AKA); entities.SaveChanges(); entities.Company.RemoveRange(entities.Company); entities.SaveChanges(); entities.Genre.RemoveRange(entities.Genre); entities.SaveChanges(); entities.Keyword.RemoveRange(entities.Keyword); entities.SaveChanges(); entities.Rating.RemoveRange(entities.Rating); entities.SaveChanges(); entities.ReleaseDate.RemoveRange(entities.ReleaseDate); entities.SaveChanges(); entities.ProductionCredit.RemoveRange(entities.ProductionCredit); entities.SaveChanges(); entities.ProductionCountry.RemoveRange(entities.ProductionCountry); entities.SaveChanges(); entities.ProductionLanguage.RemoveRange(entities.ProductionLanguage); entities.SaveChanges(); entities.Country.RemoveRange(entities.Country); entities.SaveChanges(); entities.Language.RemoveRange(entities.Language); entities.SaveChanges(); entities.Character.RemoveRange(entities.Character); entities.SaveChanges(); entities.Credit.RemoveRange(entities.Credit); entities.SaveChanges(); entities.TagLine.RemoveRange(entities.TagLine); entities.SaveChanges(); foreach (Production production in entities.Production) { production.PosterID = null; } foreach (Person person in entities.Person) { person.PrimaryImageID = null; } entities.SaveChanges(); entities.Image.RemoveRange(entities.Image); entities.SaveChanges(); entities.Production.RemoveRange(entities.Production); entities.SaveChanges(); entities.Person.RemoveRange(entities.Person); entities.SaveChanges(); entities.DataSource.RemoveRange(entities.DataSource); entities.SaveChanges(); }
public bool IsValid(object[] values) { if (values != null && values.Length == 1) { string email = values[0] as string; using (JMoviesEntities entities = new JMoviesEntities()) { return(!entities.User.Any(e => e.Email == email)); } } else { return(false); } }
public LoginResponse Authenticate(LoginRequest request) { LoginResponse response = new LoginResponse(); using (JMoviesEntities entities = new JMoviesEntities()) { response.Result = Entities.UserManagement.LoginResultEnum.Undefined; if (request.Username != null && request.Password != null) { response.Result = LoginResultEnum.WrongUsernameOrPassword; User user = entities.User.Include(e => e.Password).SingleOrDefault(e => e.UserName == request.Username.ToPlainString()); if (user != null) { if (user.Password != null) { if (HashHelper.Matches(request.Password, user.Password.Hash, user.Password.Salt, user.Password.HashType)) { if (user.Password.RetryCount >= ConfigurationConstants.MaxPasswordRetryCount) { //User blocked response.Result = LoginResultEnum.UserBlocked; } else { user.Password.ModifyDate = DateTime.Now; response.Result = LoginResultEnum.Successful; response.User = user; } } else { //Wrong Password user.Password.ModifyDate = DateTime.Now; user.Password.RetryCount++; if (user.Password.RetryCount >= ConfigurationConstants.MaxPasswordRetryCount) { user.Password.RetryCount = ConfigurationConstants.MaxPasswordRetryCount; } } entities.SaveChanges(); } } } } return(response); }
private static void HandleImages(JMoviesEntities entities, Production production, Production savedProduction) { Image oldPoster = savedProduction?.Poster; if (savedProduction != null && oldPoster == null) { oldPoster = entities.Image.FirstOrDefault(e => e.ID == savedProduction.PosterID); } Production trackedProduction = entities.Production.FirstOrDefault(e => e.ID == production.ID); if (savedProduction != null && oldPoster != null) { trackedProduction.PosterID = null; trackedProduction.Poster = null; entities.Image.Remove(oldPoster); entities.SaveChanges(); } if (production.Poster != null) { production.Poster.ProductionID = production.ID; production.Poster.ID = CommonDBHelper.GetNewID <Image>(entities, e => e.ID); entities.Image.Add(production.Poster); trackedProduction.PosterID = production.Poster.ID; } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); if (production.MediaImages != null) { foreach (Image image in production.MediaImages) { Image savedImage = entities.Image.FirstOrDefault(e => e.URL == image.URL); if (savedImage == null) { image.ID = CommonDBHelper.GetNewID <Image>(entities, e => e.ID); image.ProductionID = production.ID; entities.Add(image); } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); } } }
private static void HandleImages(JMoviesEntities entities, Person person, Person savedPerson) { Image oldPrimaryImage = null; if (savedPerson != null) { oldPrimaryImage = entities.Image.FirstOrDefault(e => e.ID == savedPerson.PrimaryImageID); } Person trackedPerson = entities.Person.FirstOrDefault(e => e.ID == person.ID); if (savedPerson != null && oldPrimaryImage != null) { trackedPerson.PrimaryImage = null; trackedPerson.PrimaryImageID = null; entities.Image.Remove(oldPrimaryImage); entities.SaveChanges(); } if (person.PrimaryImage != null) { person.PrimaryImage.PersonID = person.ID; person.PrimaryImage.ID = CommonDBHelper.GetNewID <Image>(entities, e => e.ID); entities.Image.Add(person.PrimaryImage); trackedPerson.PrimaryImageID = person.PrimaryImage.ID; } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); if (person.Photos != null) { foreach (Image image in person.Photos) { Image savedImage = entities.Image.FirstOrDefault(e => e.URL == image.URL); if (savedImage == null) { image.ID = CommonDBHelper.GetNewID <Image>(entities, e => e.ID); image.PersonID = person.ID; entities.Add(image); } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); } } }
public static void Persist(JMoviesEntities entities, Production production) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = IsolationLevel.Serializable; options.Timeout = new TimeSpan(0, 10, 0); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { Production savedProduction = entities.Production.FirstOrDefault(e => e.IMDbID == production.IMDbID); bool saved = false; if (savedProduction != null) { production.ID = savedProduction.ID; saved = true; } else { production.ID = CommonDBHelper.GetNewID <Production>(entities, e => e.ID); } Production trimmedProduction = GetTrimmedProduction(production); if (!saved) { entities.Production.Add(trimmedProduction); } entities.SaveChanges(); HandleAKAs(entities, production, savedProduction); HandleCompanies(entities, production, savedProduction); HandleDataSources(entities, production, savedProduction); HandleGenres(entities, production, savedProduction); HandleKeywords(entities, production, savedProduction); HandleLanguages(entities, production); HandleCountries(entities, production, savedProduction); HandlePersons(entities, production); HandleCharacters(entities, production, savedProduction); HandleRatings(entities, production, savedProduction); HandleReleaseDates(entities, production, savedProduction); HandleImages(entities, production, savedProduction); HandleTagLines(entities, production, savedProduction); CommonDBHelper.MarkEntityAsUpdated(entities, trimmedProduction, new string[] { "ProductionType", "Poster", "PosterID" }, true); entities.SaveChanges(); scope.Complete(); } }
static void Main(string[] args) { var builder = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{EnvironmentUtilities.GetEnvironmentName()}.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() .AddCommandLine(args); var config = builder.Build(); BaseJobConfiguration configuration = config.Get <BaseJobConfiguration>(); CustomConfiguration customConfiguration = config.Get <CustomConfiguration>(); InitializationHelper.Initialize(configuration); var services = new ServiceCollection(); services.AddOptions(); services.Configure <CustomConfiguration>(config.GetSection(ConfigurationConstants.CustomConfigurationSectionName)); services.AddSingleton <IElasticSearchConnectionProvider, ElasticSearchConnector>(); var serviceProvider = services.BuildServiceProvider(); IElasticSearchConnectionProvider elasticSearchProvider = serviceProvider.GetRequiredService <IElasticSearchConnectionProvider>(); ElasticClient elasticClient = elasticSearchProvider.GetElasticClient(ElasticSearchIndexNameConstants.Productions); using (JMoviesEntities entities = new JMoviesEntities()) { foreach (var production in entities.Production) { long productionID = production.ID; if (production is JMovies.IMDb.Entities.Movies.Movie) { using (JMoviesEntities innerEntities = new JMoviesEntities()) { JMovies.IMDb.Entities.Movies.Movie movie = production as JMovies.IMDb.Entities.Movies.Movie; movie.AKAs = innerEntities.AKA.Where(e => e.ProductionID == productionID).ToArray(); movie.Genres = innerEntities.Genre.Where(e => e.ProductionID == productionID).ToArray(); movie.Keywords = innerEntities.Keyword.Where(e => e.ProductionID == productionID).ToArray(); movie.TagLines = innerEntities.TagLine.Where(e => e.ProductionID == productionID).ToArray(); } } elasticClient.IndexDocument(MapProduction(production as IMDb.Entities.Movies.Movie)); } } }
private static void HandleReleaseDates(JMoviesEntities entities, Production production, Production savedProduction) { Movie savedMovie = savedProduction as Movie; if (savedMovie != null) { ReleaseDate[] existingReleaseDates = entities.ReleaseDate.Where(e => e.ProductionID == savedMovie.ID).ToArray(); entities.ReleaseDate.RemoveRange(existingReleaseDates); } Movie movie = production as Movie; if (movie != null) { foreach (ReleaseDate releaseDate in movie.ReleaseDates.ToArray()) { EntityEntry entry = null; if (releaseDate.Country != null) { Country existingCountry = entities.Country.FirstOrDefault(e => e.Identifier == releaseDate.Country.Identifier); if (existingCountry != null) { releaseDate.Country.ID = existingCountry.ID; entry = CommonDBHelper.MarkEntityAsUpdated(entities, releaseDate.Country); } else { releaseDate.Country.ID = CommonDBHelper.GetNewID <Country>(entities, e => e.ID); entry = entities.Country.Add(releaseDate.Country); } } releaseDate.CountryID = releaseDate.Country.ID; releaseDate.Country = null; releaseDate.ProductionID = production.ID; releaseDate.ID = CommonDBHelper.GetNewID <ReleaseDate>(entities, e => e.ID); entities.ReleaseDate.Add(releaseDate); entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); } } }
private static void HandleLanguages(JMoviesEntities entities, Production production) { Movie movie = production as Movie; if (movie != null && movie.Languages != null) { foreach (ProductionLanguage productionLanguage in movie.Languages.ToArray()) { EntityEntry entry = null; EntityEntry languageEntry = null; Language existingLanguage = entities.Language.FirstOrDefault(e => e.Identifier == productionLanguage.Language.Identifier); if (existingLanguage != null) { productionLanguage.Language.ID = existingLanguage.ID; languageEntry = CommonDBHelper.MarkEntityAsUpdated(entities, productionLanguage.Language); } else { productionLanguage.Language.ID = CommonDBHelper.GetNewID <Language>(entities, e => e.ID); languageEntry = entities.Language.Add(productionLanguage.Language); } ProductionLanguage existingProductionLanguage = entities.ProductionLanguage.FirstOrDefault(e => e.Language.Identifier == productionLanguage.Language.Identifier && e.Production.IMDbID == productionLanguage.Production.IMDbID); productionLanguage.ProductionID = productionLanguage.Production.ID; productionLanguage.Production = null; productionLanguage.LanguageID = productionLanguage.Language.ID; productionLanguage.Language = null; if (existingProductionLanguage != null) { productionLanguage.ID = existingProductionLanguage.ID; entry = CommonDBHelper.MarkEntityAsUpdated(entities, productionLanguage); } else { productionLanguage.ID = CommonDBHelper.GetNewID <ProductionLanguage>(entities, e => e.ID); entry = entities.ProductionLanguage.Add(productionLanguage); } entities.SaveChanges(); CommonDBHelper.DetachAllEntries(entities); } } }