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.Services.Interfaces; 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 GeneratorTemplateController : BaseApiController { private readonly IValidator validator; private readonly IMqService mqService; private readonly IUriService uriService; private readonly MqSettings mqSettings; public GeneratorTemplateController( IValidator validator, IMqService mqService, IUriService uriService, MqSettings mqSettings ) { this.validator = validator; this.mqService = mqService; this.uriService = uriService; this.mqSettings = mqSettings; } /// /// Запрос на генерацию шаблонов /// /// [HttpPost(ApiRoutes.GeneratorTemplate.Create)] public async Task Create([FromBody] GeneratorTemplateRequest request) { var resultValidate = await validator.ValidateAsync(request); if (!resultValidate.IsValid) return BadRequest(new Response(resultValidate.Errors)); var obj = new GeneratorTemplateMq { Action = request.Action, ApplicationId = request.ApplicationId, Ek = request.Ek, WorkId = request.WorkId, StatusEk = request.Status, IsActiveTemplate = request.IsActiveTemplate, IsActiveSchedule = request.IsActiveSchedule }; var msg = JsonSerializer.Serialize(obj); var result = mqService.Send(mqSettings.GenerateTemplates, new[] { msg }); if (!result.IsSuccess) return BadRequest(new Response(false, new List { new ErrorModel { Message = $"Ошибка при отправке данных." } })); var createdUri = uriService.GetAllUri(ApiRoutes.Template.GetAll); return Created(createdUri, new Response(null, true, new List(), "Отправлен запрос на генерацию шаблонов.")); } } }