using AutoMapper; using FluentValidation; 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.BLL.Domain.Mq; using PARR.DAL.Services.Interfaces; using System.Text.Json; namespace PARR.API.Controllers.V1 { public class GeneratorTemplateController : BaseApiController { private readonly IValidator validator; private readonly IMqGeneratorTemplateService mqGeneratorTemplateService; private readonly IUriService uriService; public GeneratorTemplateController( IValidator validator, IMqGeneratorTemplateService mqGeneratorTemplateService, IUriService uriService ) { this.validator = validator; this.mqGeneratorTemplateService = mqGeneratorTemplateService; this.uriService = uriService; } /// /// Запрос на генерацию шаблонов /// /// [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)); // Todo: проверить есть ли в бд такие ворк и апп var obj = new GeneratorTemplateMq { Action = request.Action, ApplicationId = request.ApplicationId, Ek = request.Ek, WorkId = request.WorkId }; var msg = JsonSerializer.Serialize(obj); var result = mqGeneratorTemplateService.SendMsg(msg); if (!result) 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(), "Отправлен запрос на генерацию шаблонов.")); } } }