using Microsoft.AspNetCore.Mvc; using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; using PARR.API.Services.Implementations; using PARR.API.Services.Interfaces; using PARR.API.Settings; using PARR.BLL.Domain.Mq; using PARR.BLL.Services.Interfaces; using System.Text.Json; namespace PARR.API.Controllers.V1 { public class SyncTaskController : BaseApiController { private readonly ILogger logger; private readonly IMqService mqService; private readonly IUriService uriService; private readonly MqSettings mqSettings; public SyncTaskController( ILogger logger, IMqService mqService, IUriService uriService, MqSettings mqSettings ) { this.logger = logger; this.mqService = mqService; this.uriService = uriService; this.mqSettings = mqSettings; } /// /// Сопоставить текущие шаблоны для Job, создать недостущие шаблоны /// /// ИД шаблона [HttpPost(ApiRoutes.SyncTask.MatchTemplatesForJob)] public async Task MatchTemplatesForJob([FromRoute] Guid jobId) { //24b3529a-dd43-444a-b10e-ac54fefd046a var matchTemplateTask = new TemplateMatcherMq { Id = jobId, EntityType = Constants.SyncTaskEntityTypeEnum.Job }; var msg = JsonSerializer.Serialize(matchTemplateTask); logger.LogDebug("Подготовлено сообщение: {Message}", new[] { msg }); var result = await mqService.SendAsync(mqSettings.TemplatesMatcher, new[] { msg }); logger.LogDebug("Получен код отпрвки: {IsSuccess}", result.IsSuccess); if (!result.IsSuccess) return BadRequest(new Response(false, new List { new ErrorModel { Message = "Ошибка отправки сообщения в очередь" } })); var createdUri = uriService.GetAllUri(ApiRoutes.SyncTask.MatchTemplatesForJob); return Created(createdUri, new Response(null, true, new List(), "Отправлен запрос на сопоставление шаблонов и Job")); } } }