/*Summary * Retrieves a list of Box Sets from the GoogleSheet that contains them, then adds new and updates old */ public async Task <IActionResult> GoogleLoad() { var webRoot = _env.WebRootPath; // find the file on the server string directoryPath = Path.Combine(webRoot, "Data", "app_client_secret.json"); // This will need to be in official secrets not just an open json :p boxSetReader.Init(directoryPath); _db.AddOrUpdateRange <BoxSet>(boxSetReader.ReadBoxes(SpreadsheetId)); await _db.SaveChangesAsync(); return(RedirectToAction("Index")); }
public static void SeedTranslations( DatabaseContext context, List <BaseTranslationInitializer> listTranslationInitializers) { var listTranslationLabelDefinitions = context .TranslationLabelDefinition .ToList(); var listLanguages = context.Language.ToList(); var seedList = new List <TranslationLabel>(); foreach (var initializer in listTranslationInitializers) { var translations = initializer.Translations(); foreach (var translation in translations) { var definition = listTranslationLabelDefinitions.FirstOrDefault( x => x.Module.Equals(initializer.Module, StringComparison.OrdinalIgnoreCase) && x.Type.Equals(initializer.Type, StringComparison.OrdinalIgnoreCase) && x.Key.Equals(translation.Key, StringComparison.OrdinalIgnoreCase)); var translationLabels = new List <TranslationLabel>(); if (definition.IsNullOrDefault()) { definition = new TranslationLabelDefinition { Module = initializer.Module, Type = initializer.Type, Key = translation.Key }; context.TranslationLabelDefinition.Add(definition); context.SaveChanges(); } else { var databaseTranslationLabels = context .TranslationLabel .Where(x => x.TranslationLabelDefinition_Id == definition.Id) .ToList(); translationLabels.AddRange(databaseTranslationLabels); } if (!string.IsNullOrWhiteSpace(translation.NL)) { var language = listLanguages.First(x => x.Id == 1); var translationExists = translationLabels.Any( x => x.Language_Id == language.Id && x.TranslationLabelDefinition_Id == definition.Id); var translationLabel = new TranslationLabel { TranslationLabelDefinition_Id = definition.Id, TranslationLabelDefinition = definition, Language_Id = language.Id, Language = language, Label = translation.NL, TrackingState = translationExists ? TrackingState.Unchanged : TrackingState.Added }; seedList.Add(translationLabel); } if (!string.IsNullOrWhiteSpace(translation.EN)) { var language = listLanguages.First(x => x.Id == 2); var translationExists = translationLabels.Any( x => x.Language_Id == language.Id && x.TranslationLabelDefinition_Id == definition.Id); var translationLabel = new TranslationLabel { TranslationLabelDefinition_Id = definition.Id, TranslationLabelDefinition = definition, Language_Id = language.Id, Language = language, Label = translation.EN, TrackingState = translationExists ? TrackingState.Unchanged : TrackingState.Added }; seedList.Add(translationLabel); } if (!string.IsNullOrWhiteSpace(translation.DE)) { var language = listLanguages.First(x => x.Id == 3); var translationExists = translationLabels.Any( x => x.Language_Id == language.Id && x.TranslationLabelDefinition_Id == definition.Id); var translationLabel = new TranslationLabel { TranslationLabelDefinition_Id = definition.Id, TranslationLabelDefinition = definition, Language_Id = language.Id, Language = language, Label = translation.DE, TrackingState = translationExists ? TrackingState.Unchanged : TrackingState.Added }; seedList.Add(translationLabel); } if (!string.IsNullOrWhiteSpace(translation.FR)) { var language = listLanguages.First(x => x.Id == 4); var translationExists = translationLabels.Any( x => x.Language_Id == language.Id && x.TranslationLabelDefinition_Id == definition.Id); var translationLabel = new TranslationLabel { TranslationLabelDefinition_Id = definition.Id, TranslationLabelDefinition = definition, Language_Id = language.Id, Language = language, Label = translation.FR, TrackingState = translationExists ? TrackingState.Unchanged : TrackingState.Added }; seedList.Add(translationLabel); } } } context.AddOrUpdateRange(seedList); }