using DataModel.Database; using DataModel.Database.Common; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; namespace Processor; public static class TranslationProcessor { public static async Task> GetTranslations(TextElement textElement) { await using var db = ProcessorMeta.ServiceProvider.GetRequiredService(); var missedTranslations = new List(); 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> SaveChangedTranslation(int translationId, string text) { await using var db = ProcessorMeta.ServiceProvider.GetRequiredService(); var dbTranslation = await db.Translations.FirstAsync(n => n.Id == translationId); dbTranslation.Text = text; try { // Save the changes: await db.SaveChangesAsync(); return new ProcessorResult(dbTranslation); } catch (DbUpdateException updateException) { return updateException.ToProcessorResult(); } } }