using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using PARR.Core.Common.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 logger; private readonly IRabbitService mqService; private readonly MqSettings mqSettings; private readonly ITemplateService templateService; public TemplateUpdaterMqSender( ILogger 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 { updateRequest }); if (result.IsSuccess) { logger.LogInformation("Отправлен запрос на обновление шаблона {TemplateId}", updateRequest.TemplateId); } else { logger.LogError("Ошибка при отправке запроса на обновление шаблона {TemplateId} в очередь '{Queue}'.", updateRequest.TemplateId, mqSettings.TemplateUpdater.QueueName); } } }