Пример #1
0
        /*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"));
        }
Пример #2
0
        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);
        }