145 lines
4.9 KiB
C#
145 lines
4.9 KiB
C#
|
|
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<Language> Languages { get; set; }
|
||
|
|
public List<LanguageTextsSeedDto> LanguageTexts { get; set; }
|
||
|
|
public List<LanguageTextsSeedDto> LanguageFieldTitles { get; set; }
|
||
|
|
}
|
||
|
|
|
||
|
|
public class LanguageDataSeeder : IDataSeedContributor, ITransientDependency
|
||
|
|
{
|
||
|
|
private readonly IRepository<Language, Guid> _languages;
|
||
|
|
private readonly IRepository<LanguageKey, Guid> _languageKey;
|
||
|
|
private readonly IRepository<LanguageText, Guid> _languagesText;
|
||
|
|
|
||
|
|
public LanguageDataSeeder(
|
||
|
|
IRepository<Language, Guid> languages,
|
||
|
|
IRepository<LanguageKey, Guid> languageKey,
|
||
|
|
IRepository<LanguageText, Guid> 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<LanguageSeederDto>();
|
||
|
|
|
||
|
|
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}'");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|