diff --git a/PARR.API/Contracts/V1/ApiRoutes.cs b/PARR.API/Contracts/V1/ApiRoutes.cs index 6e55f8a1..bf7af6ea 100644 --- a/PARR.API/Contracts/V1/ApiRoutes.cs +++ b/PARR.API/Contracts/V1/ApiRoutes.cs @@ -68,6 +68,11 @@ public const string GetAll = Base + "/template-statuses/"; } + public static class GeneratorTemplate + { + public const string Create = Base + "/generator-templates/"; + } + //public static class Layer //{ diff --git a/PARR.API/Contracts/V1/Requests/GeneratorTemplateRequest.cs b/PARR.API/Contracts/V1/Requests/GeneratorTemplateRequest.cs new file mode 100644 index 00000000..3f3e99d3 --- /dev/null +++ b/PARR.API/Contracts/V1/Requests/GeneratorTemplateRequest.cs @@ -0,0 +1,25 @@ +namespace PARR.API.Contracts.V1.Requests +{ + public class GeneratorTemplateRequest + { + /// + /// Id работы + /// + public Guid WorkId { get; set; } + + /// + /// Id приложения + /// + public Guid ApplicationId { get; set; } + + /// + /// Действие: create, deactivate + /// + public required string Action { get; set; } + + /// + /// ЭК, принимает регулярное выражение. Например: *, ВРТ-*-ДВС + /// + public required string Ek { get; set; } + } +} diff --git a/PARR.API/Controllers/V1/GeneratorTemplateController.cs b/PARR.API/Controllers/V1/GeneratorTemplateController.cs new file mode 100644 index 00000000..9901e7aa --- /dev/null +++ b/PARR.API/Controllers/V1/GeneratorTemplateController.cs @@ -0,0 +1,37 @@ +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; + +namespace PARR.API.Controllers.V1 +{ + public class GeneratorTemplateController : BaseApiController + { + private readonly IValidator validator; + + public GeneratorTemplateController( + IValidator validator + ) + { + this.validator = validator; + } + + /// + /// Запрос на генерацию шаблонов + /// + /// + [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)); + + + + return Ok(); + } + } +} diff --git a/PARR.API/Validators/.gitkeep b/PARR.API/Validators/.gitkeep deleted file mode 100644 index 9093214c..00000000 --- a/PARR.API/Validators/.gitkeep +++ /dev/null @@ -1,6 +0,0 @@ -namespace PARR.API.Validators -{ - public class _ - { - } -} diff --git a/PARR.API/Validators/GeneratorTemplateRequestValidator.cs b/PARR.API/Validators/GeneratorTemplateRequestValidator.cs new file mode 100644 index 00000000..44ebc03e --- /dev/null +++ b/PARR.API/Validators/GeneratorTemplateRequestValidator.cs @@ -0,0 +1,18 @@ +using FluentValidation; +using PARR.API.Contracts.V1.Requests; +using PARR.BLL.Contracts; + +namespace PARR.API.Validators +{ + public class GeneratorTemplateRequestValidator : AbstractValidator + { + public GeneratorTemplateRequestValidator() + { + RuleFor(t => t.WorkId).NotEmpty(); + RuleFor(t => t.ApplicationId).NotEmpty(); + RuleFor(t => t.Ek).NotEmpty(); + RuleFor(t => t.Action).Must(t => t.ToLower() == GenerateTemplateActionsEnum.create.ToString() || t.ToLower() == GenerateTemplateActionsEnum.deactivate.ToString()) + .WithMessage($"Допустимые значения: {GenerateTemplateActionsEnum.create}, {GenerateTemplateActionsEnum.deactivate}"); + } + } +} diff --git a/PARR.BLL/Contracts/GenerateTemplateActionsEnum.cs b/PARR.BLL/Contracts/GenerateTemplateActionsEnum.cs new file mode 100644 index 00000000..ecfbbc5d --- /dev/null +++ b/PARR.BLL/Contracts/GenerateTemplateActionsEnum.cs @@ -0,0 +1,11 @@ +namespace PARR.BLL.Contracts +{ + /// + /// Действия при генерации шаблонов + /// + public enum GenerateTemplateActionsEnum + { + create, + deactivate + } +}