49 lines
1.6 KiB
C#
49 lines
1.6 KiB
C#
using FictionArchive.Service.NovelService.Models.Localization;
|
|
using FictionArchive.Service.NovelService.Services;
|
|
using FictionArchive.Service.Shared.Contracts.Events;
|
|
using MassTransit;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace FictionArchive.Service.NovelService.Consumers;
|
|
|
|
public class TranslationRequestCompletedConsumer : IConsumer<ITranslationRequestCompleted>
|
|
{
|
|
private readonly ILogger<TranslationRequestCompletedConsumer> _logger;
|
|
private readonly NovelServiceDbContext _dbContext;
|
|
|
|
public TranslationRequestCompletedConsumer(
|
|
ILogger<TranslationRequestCompletedConsumer> logger,
|
|
NovelServiceDbContext dbContext)
|
|
{
|
|
_logger = logger;
|
|
_dbContext = dbContext;
|
|
}
|
|
|
|
public async Task Consume(ConsumeContext<ITranslationRequestCompleted> context)
|
|
{
|
|
var message = context.Message;
|
|
|
|
var localizationRequest = await _dbContext.LocalizationRequests
|
|
.Include(r => r.KeyRequestedForTranslation)
|
|
.ThenInclude(lk => lk.Texts)
|
|
.FirstOrDefaultAsync(lk => lk.Id == message.TranslationRequestId);
|
|
|
|
if (localizationRequest == null)
|
|
{
|
|
// Not one of our requests, discard it
|
|
return;
|
|
}
|
|
|
|
localizationRequest.KeyRequestedForTranslation.Texts.Add(new LocalizationText
|
|
{
|
|
Language = localizationRequest.TranslateTo,
|
|
Text = message.TranslatedText,
|
|
TranslationEngine = localizationRequest.Engine
|
|
});
|
|
|
|
_dbContext.LocalizationRequests.Remove(localizationRequest);
|
|
await _dbContext.SaveChangesAsync();
|
|
}
|
|
}
|