using MongoDB.Entities; using PrivaPub.Models.Data; using PrivaPub.StaticServices; using System.Text; using System.Text.Json; namespace PrivaPub.Data { public static class InitDb { public static async Task Init(this DbEntities dbClient) { await SyncLanguages(dbClient); await UpdateNewLanguages(dbClient); } static async Task SyncLanguages(DbEntities dbClient) { if (await dbClient.Languages.ExecuteAnyAsync()) return; var languagesJson = await File.ReadAllTextAsync(Path.Combine(Directory.GetCurrentDirectory(), "Data", "languagesNative.json"), Encoding.UTF8); var languagesRows = JsonSerializer.Deserialize>(languagesJson); var languages = new List(); foreach (var languageRow in languagesRows ?? new LanguagesRow[] { }) languages.Add(new Language { EnglishName = languageRow.EnglishName, NativeName = languageRow.NativeName, International2Code = languageRow.International2Code }); await DB.Default.SaveAsync(languages); } static async Task UpdateNewLanguages(DbEntities dbClient) { var bulgarianLanguage = await dbClient.Languages.Match(l => l.International2Code == "bg").ExecuteFirstAsync(); if (bulgarianLanguage.NativeName == "Български") return; var languagesToUpdate = new Dictionary() { { "bg", "Български" }, { "cs", "Česky" }, { "da", "Dansk" }, { "nl", "Nederlands" }, { "et", "Eesti" }, { "fi", "Suomalainen" }, { "el", "Ελληνική" }, { "hu", "Magyar" }, { "lv", "Latviešu" }, { "lt", "Lietuvių kalba" }, { "pl", "Polski" }, { "pt", "Português" }, { "ro", "Românesc" }, { "sk", "Slovenská" }, { "sl", "Slovenski" }, { "sv", "Svenska" } }; foreach (var languageToUpdate in languagesToUpdate) { var bgLang = await dbClient.Languages.Match(l => l.International2Code == languageToUpdate.Key).ExecuteFirstAsync(); bgLang.NativeName = languageToUpdate.Value; await DB.Default.SaveAsync(bgLang); } } } }