using FluentValidation; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Requests; using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; using PARR.API.Settings; using PARR.BLL.Domain.Mq; using PARR.BLL.Services.Interfaces; using PARR.Constants; using System.Text.Json; namespace PARR.API.Controllers.V1 { /// /// Распределитель РР /// [Authorize(Roles = ParrRoles.Administrator.Role)] public class DistributorController : BaseApiController { private readonly IMqService mqService; private readonly MqSettings mqSettings; private readonly IValidator validator; public DistributorController( IMqService mqService, MqSettings mqSettings, IValidator validator ) { this.mqService = mqService; this.mqSettings = mqSettings; this.validator = validator; } /// /// Перераспределить шаблоны для регламентной работы /// /// [HttpPost(ApiRoutes.Distributor.Distribute)] public async Task Distribute([FromBody] DistributeRequest request) { var resultValidate = await validator.ValidateAsync(request); if (!resultValidate.IsValid) return BadRequest(new Response(resultValidate.Errors)); var requestToMq = new TemplateDistributorMq { ApplicationInWorkId = request.ApplicationInWorkId }; var msg = JsonSerializer.Serialize(requestToMq); var sendResult = mqService.Send(mqSettings.TemplateDistributor, new[] { msg }); if (sendResult.IsSuccess) return Created("", new Response(null, true, new List(), "Отправлен запрос на перераспределение регламентных работ.")); else return BadRequest(new Response(false, new List { new ErrorModel { Message="Ошибка при отправке данных."} })); } } }