diff --git a/PARR.API/Contracts/V1/Requests/GeneratorTemplateRequest.cs b/PARR.API/Contracts/V1/Requests/GeneratorTemplateRequest.cs index 88a7ca25..f19c953a 100644 --- a/PARR.API/Contracts/V1/Requests/GeneratorTemplateRequest.cs +++ b/PARR.API/Contracts/V1/Requests/GeneratorTemplateRequest.cs @@ -17,15 +17,21 @@ /// public required string Action { get; set; } - /// - /// ЭК, принимает регулярное выражение. Например: *, ВРТ-*-ДВС - /// - public required string Ek { get; set; } + ///// + ///// ЭК, принимает регулярное выражение. Например: *, ВРТ-*-ДВС + ///// + //public required string Ek { get; set; } + /// - /// Статус ЭК. 0 - все статусы, 1,2,3,4,5,6,7,9 + /// ЭК, принимает список маск. Например: *, ВРТ-*-ДВС /// - public int Status { get; set; } + public required List Ek { get; set; } + + /// + /// Список статусов ЭК. 0 - все статусы, 1,2,3,4,5,6,7,9 + /// + public required List Status { get; set; } /// /// При создании, активировать шаблон diff --git a/PARR.API/Controllers/V1/GeneratorTemplateController.cs b/PARR.API/Controllers/V1/GeneratorTemplateController.cs index c621d254..288e3e24 100644 --- a/PARR.API/Controllers/V1/GeneratorTemplateController.cs +++ b/PARR.API/Controllers/V1/GeneratorTemplateController.cs @@ -46,22 +46,50 @@ namespace PARR.API.Controllers.V1 if (!resultValidate.IsValid) return BadRequest(new Response(resultValidate.Errors)); - var obj = new GeneratorTemplateMq + var result = true; + + request.Ek.ForEach(ek => { - Action = request.Action, - ApplicationId = request.ApplicationId, - Ek = request.Ek, - WorkId = request.WorkId, - StatusEk = request.Status, - IsActiveTemplate = request.IsActiveTemplate, - IsActiveSchedule = request.IsActiveSchedule - }; + request.Status.ForEach(status => + { + var obj = new GeneratorTemplateMq + { + Action = request.Action, + ApplicationId = request.ApplicationId, + Ek = ek, + WorkId = request.WorkId, + StatusEk = status, + IsActiveTemplate = request.IsActiveTemplate, + IsActiveSchedule = request.IsActiveSchedule + }; - var msg = JsonSerializer.Serialize(obj); + var msg = JsonSerializer.Serialize(obj); - var result = mqService.Send(mqSettings.GenerateTemplates, new[] { msg }); + var _result = mqService.Send(mqSettings.GenerateTemplates, new[] { msg }); - if (!result.IsSuccess) + if (_result.IsSuccess == false) + result = false; + + }); + }); + + //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) + if (!result) return BadRequest(new Response(false, new List { new ErrorModel { Message = $"Ошибка при отправке данных." } })); var createdUri = uriService.GetAllUri(ApiRoutes.Template.GetAll); diff --git a/PARR.API/Validators/GeneratorTemplateRequestValidator.cs b/PARR.API/Validators/GeneratorTemplateRequestValidator.cs index 9feb4991..c620223c 100644 --- a/PARR.API/Validators/GeneratorTemplateRequestValidator.cs +++ b/PARR.API/Validators/GeneratorTemplateRequestValidator.cs @@ -2,6 +2,7 @@ using PARR.API.Contracts.V1.Requests; using PARR.BLL.Contracts; using PARR.DAL.Services.Interfaces; +using System.Linq; namespace PARR.API.Validators { @@ -32,7 +33,21 @@ namespace PARR.API.Validators //0 - все статусы, 1,2,3,4,5,6,7,9 var ekStatuses = new List { 0, 1, 2, 3, 4, 5, 6, 7, 9 }; - RuleFor(t => t.Status).Must(t => ekStatuses.Contains(t)).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9"); + //RuleFor(t => t.Status).Must(t => ekStatuses.Contains(t)).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9"); + RuleFor(t => t.Status).Must((statuses) => + { + if (statuses.Count < 1) + return false; + + var isContains = true; + statuses.ForEach(status => + { + if (ekStatuses.Contains(status) == false) + isContains = false; + }); + + return isContains; + }).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9"); } private async Task IsApplicationContainWork(GeneratorTemplateRequest request, Guid applicationId)