using System; using System.Globalization; using System.IO; using System.Linq; using System.Threading.Tasks; using System.Collections.Generic; using Sozsoft.Languages.Entities; using Microsoft.Extensions.Configuration; using Volo.Abp.Data; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Repositories; namespace Sozsoft.Platform.Data.Seeds; public class LanguageSeederDto { public List Languages { get; set; } public List LanguageTexts { get; set; } public List LanguageFieldTitles { get; set; } } public class LanguageDataSeeder : IDataSeedContributor, ITransientDependency { private readonly IRepository _languages; private readonly IRepository _languageKey; private readonly IRepository _languagesText; public LanguageDataSeeder( IRepository languages, IRepository languageKey, IRepository languagesText) { _languages = languages; _languageKey = languageKey; _languagesText = languagesText; } public async Task SeedAsync(DataSeedContext context) { var languages = await _languages.GetListAsync(); var keys = await _languageKey.GetListAsync(); var texts = await _languagesText.GetListAsync(); var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile(Path.Combine("Seeds", "LanguagesData.json")) .Build(); var items = configuration.Get(); foreach (var item in items.Languages) { if (!languages.Any(a => a.CultureName == item.CultureName)) { await _languages.InsertAsync(new() { CultureName = item.CultureName, UiCultureName = item.UiCultureName, DisplayName = item.DisplayName, IsEnabled = item.IsEnabled, TwoLetterISOLanguageName = new CultureInfo(item.CultureName).TwoLetterISOLanguageName, }); } } foreach (var item in items.LanguageTexts) { try { if (!keys.Any(a => a.Key == item.Key)) { await _languageKey.InsertAsync(new() { Key = item.Key, ResourceName = item.ResourceName, }); } if (!texts.Any(a => a.CultureName == "en" && a.Key == item.Key)) { await _languagesText.InsertAsync(new() { CultureName = "en", Key = item.Key, Value = item.En, ResourceName = item.ResourceName, }); } if (!texts.Any(a => a.CultureName == "tr" && a.Key == item.Key)) { await _languagesText.InsertAsync(new() { CultureName = "tr", Key = item.Key, Value = item.Tr, ResourceName = item.ResourceName, }); } } catch (Exception ex) { throw new Exception($"Hata veren Kod:' ResourceName='{item.ResourceName}', Key='{item.Key}' Message='{ex.Message}'"); } } foreach (var item in items.LanguageFieldTitles) { try { if (!keys.Any(a => a.Key == item.Key)) { await _languageKey.InsertAsync(new() { Key = item.Key, ResourceName = item.ResourceName, }); } if (!texts.Any(a => a.CultureName == "en" && a.Key == item.Key)) { await _languagesText.InsertAsync(new() { CultureName = "en", Key = item.Key, Value = item.En, ResourceName = item.ResourceName, }); } if (!texts.Any(a => a.CultureName == "tr" && a.Key == item.Key)) { await _languagesText.InsertAsync(new() { CultureName = "tr", Key = item.Key, Value = item.Tr, ResourceName = item.ResourceName, }); } } catch (Exception ex) { throw new Exception($"Hata veren Kod:' ResourceName='{item.ResourceName}', Key='{item.Key}' Message='{ex.Message}'"); } } } }