57 lines
2.4 KiB
C#
57 lines
2.4 KiB
C#
using Microsoft.EntityFrameworkCore;
|
||
using Microsoft.Extensions.Logging;
|
||
using PARR.Core.Common.Interfaces.RabbitServices;
|
||
using PARR.DAL.Services.Interfaces;
|
||
using PARR.Domain.Common.Rabbit.Messages;
|
||
using PARR.TemplateMatcher.Services.Interfaces;
|
||
using PARR.TemplateMatcher.Settings;
|
||
|
||
namespace PARR.TemplateMatcher.Services.Implementations;
|
||
|
||
internal class TemplateUpdaterMqSender : ITemplateUpdaterMqSender
|
||
{
|
||
private readonly ILogger<TemplateUpdaterMqSender> logger;
|
||
private readonly IRabbitService mqService;
|
||
private readonly MqSettings mqSettings;
|
||
private readonly ITemplateService templateService;
|
||
|
||
public TemplateUpdaterMqSender(
|
||
ILogger<TemplateUpdaterMqSender> logger,
|
||
IRabbitService mqService,
|
||
MqSettings mqSettings,
|
||
ITemplateService templateService
|
||
)
|
||
{
|
||
this.logger = logger;
|
||
this.mqService = mqService;
|
||
this.mqSettings = mqSettings;
|
||
this.templateService = templateService;
|
||
}
|
||
|
||
public async Task SendTemplateUpdateMessageAsync(TemplateUpdaterMq updateRequest)
|
||
{
|
||
logger.LogDebug("Отправка сообщения в очередь '{Queue}' для шаблона {TemplateId}",
|
||
mqSettings.TemplateUpdater.QueueName, updateRequest.TemplateId);
|
||
|
||
|
||
//var existingTemplateByName = await templateService.Get().AsNoTracking()
|
||
// .FirstOrDefaultAsync(t => EF.Functions.ILike(t.Name, updateRequest.Name) && updateRequest.TemplateId != t.Id);
|
||
//if (existingTemplateByName != null)
|
||
//{
|
||
// logger.LogError("Шаблон с именем {TemplateName} уже существует в базе данных. Текущий Id:{TemplateId}", existingTemplateByName.Name, existingTemplateByName.Id);
|
||
// return;
|
||
//}
|
||
|
||
var result = await mqService.SendAsync(mqSettings.TemplateUpdater, new List<object> { updateRequest });
|
||
|
||
if (result.IsSuccess)
|
||
{
|
||
logger.LogInformation("Отправлен запрос на обновление шаблона {TemplateId}", updateRequest.TemplateId);
|
||
}
|
||
else
|
||
{
|
||
logger.LogError("Ошибка при отправке запроса на обновление шаблона {TemplateId} в очередь '{Queue}'.",
|
||
updateRequest.TemplateId, mqSettings.TemplateUpdater.QueueName);
|
||
}
|
||
}
|
||
} |