Added the translation processor
This commit is contained in:
parent
4f16988460
commit
421589b633
52
I18N Commander/Processor/TranslationProcessor.cs
Normal file
52
I18N Commander/Processor/TranslationProcessor.cs
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
using DataModel.Database;
|
||||||
|
using DataModel.Database.Common;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
|
namespace Processor;
|
||||||
|
|
||||||
|
public static class TranslationProcessor
|
||||||
|
{
|
||||||
|
public static async Task<List<Translation>> GetTranslations(TextElement textElement)
|
||||||
|
{
|
||||||
|
await using var db = ProcessorMeta.ServiceProvider.GetRequiredService<DataContext>();
|
||||||
|
var missedTranslations = new List<Translation>();
|
||||||
|
var cultureInfos = await AppSettings.GetCultureInfos();
|
||||||
|
foreach (var cultureInfo in cultureInfos)
|
||||||
|
{
|
||||||
|
if(!await db.Translations.AnyAsync(n => n.TextElement == textElement && n.Culture == cultureInfo.Code))
|
||||||
|
missedTranslations.Add(new Translation
|
||||||
|
{
|
||||||
|
Culture = cultureInfo.Code,
|
||||||
|
Text = string.Empty,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if(missedTranslations.Count > 0)
|
||||||
|
{
|
||||||
|
textElement.Translations.AddRange(missedTranslations);
|
||||||
|
db.TextElements.Update(textElement);
|
||||||
|
await db.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
return await db.Translations.Where(n => n.TextElement == textElement).ToListAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async Task<ProcessorResult<Translation>> SaveChangedTranslation(int translationId, string text)
|
||||||
|
{
|
||||||
|
await using var db = ProcessorMeta.ServiceProvider.GetRequiredService<DataContext>();
|
||||||
|
var dbTranslation = await db.Translations.FirstAsync(n => n.Id == translationId);
|
||||||
|
dbTranslation.Text = text;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Save the changes:
|
||||||
|
await db.SaveChangesAsync();
|
||||||
|
return new ProcessorResult<Translation>(dbTranslation);
|
||||||
|
}
|
||||||
|
catch (DbUpdateException updateException)
|
||||||
|
{
|
||||||
|
return updateException.ToProcessorResult<Translation>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user