using Microsoft.Extensions.Logging; using PARR.BLL.Domain.Mq; using PARR.BLL.Services.Interfaces; using PARR.Common.Domain; using PARR.Constants; using PARR.DAL.DomainServices.Interfaces; using PARR.TemplateMatcher.Settings; using System.Text.Json; namespace PARR.TemplateMatcher { internal class TemplateMatcher : ITemplateMatcher { private readonly ILogger logger; private readonly IUnitFilterService unitFilterService; private readonly MqSettings mqSettings; private readonly IMqService mqService; public TemplateMatcher( ILogger logger, IUnitFilterService unitFilterService, MqSettings mqSettings, IMqService mqService ) { this.logger = logger; this.unitFilterService = unitFilterService; this.mqSettings = mqSettings; this.mqService = mqService; } public async Task MatchTemplatesForJob(Guid jobId) { var unitIdsToCreateTemplate = await unitFilterService.GetUnitsIdForNotExistTemplatesByJobFilterAsync(jobId); if (unitIdsToCreateTemplate == null || !unitIdsToCreateTemplate.Any()) return; foreach (var unitId in unitIdsToCreateTemplate) { var mqRequest = new TemplateGeneratorWorkerMq { JobId = jobId, UnitId = unitId, HistoryInitiator = new HistoryInitiator { InitiatorComment = "Запрос на создание шаблона", InitiatorParrComponentId = ParrComponentsEnum.TemplateTaskGenerator } }; var msg = JsonSerializer.Serialize(mqRequest); var result = new MqSendResult { IsSuccess = true };//TODO await mqService.SendAsync(mqSettings.TemplateGenerator, new[] { msg }); if (result.IsSuccess) logger.LogInformation($"Отправлен запрос на создание шаблона: {msg}"); else logger.LogError($"Ошибка при отправке запроса на создание шаблона: {msg}"); } } public Task MatchTemplatesForJobGroup(Guid jobGroupId) { throw new NotImplementedException(); } public Task MatchTemplatesForTemplate(Guid templateId) { throw new NotImplementedException(); } } }