using FictionArchive.Common.Enums; using FictionArchive.Service.TranslationService.Models; using FictionArchive.Service.TranslationService.Models.Database; using FictionArchive.Service.TranslationService.Models.Enums; using FictionArchive.Service.TranslationService.Services.Database; using FictionArchive.Service.TranslationService.Services.TranslationEngines; namespace FictionArchive.Service.TranslationService.Services; public class TranslationEngineService { private readonly IEnumerable _translationEngines; private readonly TranslationServiceDbContext _dbContext; public TranslationEngineService(IEnumerable translationEngines, TranslationServiceDbContext dbContext) { _translationEngines = translationEngines; _dbContext = dbContext; } public async Task Translate(Language from, Language to, string text, string translationEngineKey) { var engine = _translationEngines.FirstOrDefault(engine => engine.Descriptor.Key == translationEngineKey); var translation = await engine.GetTranslation(text, from, to); _dbContext.TranslationRequests.Add(new TranslationRequest() { OriginalText = text, BilledCharacterCount = translation.BilledCharacterCount, // FILL ME From = from, To = to, Status = translation != null ? TranslationRequestStatus.Success : TranslationRequestStatus.Failed, TranslatedText = translation.TranslatedText, TranslationEngineKey = translationEngineKey }); await _dbContext.SaveChangesAsync(); return translation; } }