diff --git a/PARR.API/Contracts/V1/Requests/MatchTemplatesForJobRequest.cs b/PARR.API/Contracts/V1/Requests/MatchTemplatesForJobRequest.cs new file mode 100644 index 00000000..4623220d --- /dev/null +++ b/PARR.API/Contracts/V1/Requests/MatchTemplatesForJobRequest.cs @@ -0,0 +1,9 @@ +using PARR.Constants; + +namespace PARR.API.Contracts.V1.Requests +{ + public class MatchTemplatesForJobRequest + { + public TemplateMatcherActionEnum Action { get; set; } + } +} diff --git a/PARR.API/Controllers/V1/SyncTaskController.cs b/PARR.API/Controllers/V1/SyncTaskController.cs index ec973fa5..96ab79d5 100644 --- a/PARR.API/Controllers/V1/SyncTaskController.cs +++ b/PARR.API/Controllers/V1/SyncTaskController.cs @@ -1,5 +1,6 @@ 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.Implementations; @@ -7,6 +8,8 @@ using PARR.API.Services.Interfaces; using PARR.API.Settings; using PARR.BLL.Domain.Mq; using PARR.BLL.Services.Interfaces; +using PARR.Common.Domain; +using PARR.Constants; using System.Text.Json; namespace PARR.API.Controllers.V1 @@ -17,18 +20,21 @@ namespace PARR.API.Controllers.V1 private readonly IMqService mqService; private readonly IUriService uriService; private readonly MqSettings mqSettings; + private readonly IClientService clientService; public SyncTaskController( ILogger logger, IMqService mqService, IUriService uriService, - MqSettings mqSettings + MqSettings mqSettings, + IClientService clientService ) { this.logger = logger; this.mqService = mqService; this.uriService = uriService; this.mqSettings = mqSettings; + this.clientService = clientService; } /// @@ -36,13 +42,20 @@ namespace PARR.API.Controllers.V1 /// /// ИД шаблона [HttpPost(ApiRoutes.SyncTask.MatchTemplatesForJob)] - public async Task MatchTemplatesForJob([FromRoute] Guid jobId) + public async Task MatchTemplatesForJob([FromRoute] Guid jobId, [FromBody] MatchTemplatesForJobRequest request) { //24b3529a-dd43-444a-b10e-ac54fefd046a var matchTemplateTask = new TemplateMatcherMq { Id = jobId, - EntityType = Constants.SyncTaskEntityTypeEnum.Job + EntityType = Constants.SyncTaskEntityTypeEnum.Job, + Action = request.Action, + Initiator = new HistoryInitiator + { + InitiatorIp = clientService.GetClientIp()?.ToString(), + InitiatorParrComponentId = ParrComponentsEnum.Api, + InitiatorComment = $"Отправлен запрос из GUI, action: {request.Action.ToString()}" + } }; var msg = JsonSerializer.Serialize(matchTemplateTask); diff --git a/PARR.BLL/Domain/Mq/TemplateMatcherMq.cs b/PARR.BLL/Domain/Mq/TemplateMatcherMq.cs index ebb7d829..19338b67 100644 --- a/PARR.BLL/Domain/Mq/TemplateMatcherMq.cs +++ b/PARR.BLL/Domain/Mq/TemplateMatcherMq.cs @@ -1,4 +1,5 @@ -using PARR.Constants; +using PARR.Common.Domain; +using PARR.Constants; namespace PARR.BLL.Domain.Mq { @@ -6,5 +7,8 @@ namespace PARR.BLL.Domain.Mq { public Guid Id { get; set; } public SyncTaskEntityTypeEnum EntityType { get; set; } + public TemplateMatcherActionEnum Action { get; set; } + + public required IHistoryInitiator Initiator { get; set; } } } diff --git a/PARR.BLL/Domain/Mq/TemplateUpdaterMq.cs b/PARR.BLL/Domain/Mq/TemplateUpdaterMq.cs new file mode 100644 index 00000000..9117067e --- /dev/null +++ b/PARR.BLL/Domain/Mq/TemplateUpdaterMq.cs @@ -0,0 +1,30 @@ +using PARR.Common.Domain; +using PARR.Constants; + +namespace PARR.BLL.Domain.Mq +{ + public class TemplateUpdaterMq + { + public Guid TemplateId { get; set; } + + public Guid JobId { get; set; } + + public required string Name { get; set; } + + public bool IsActiveTemplate { get; set; } + + public bool IsActiveSchedule { get; set; } + + public DateTimeOffset? LastRun { get; set; } + + public DateTimeOffset NextRun { get; set; } + + public Guid UnitId { get; set; } + + public int? Index { get; set; } + + public TemplateStatusTypeEnum StatusTypeId { get; set; } + + public required IHistoryInitiator Initiator { get; set; } + } +} diff --git a/PARR.Constants/TemplateMatcherActionEnum.cs b/PARR.Constants/TemplateMatcherActionEnum.cs new file mode 100644 index 00000000..f07fbe92 --- /dev/null +++ b/PARR.Constants/TemplateMatcherActionEnum.cs @@ -0,0 +1,17 @@ +using System.Text.Json.Serialization; + +namespace PARR.Constants +{ + [JsonConverter(typeof(JsonStringEnumConverter))] + public enum TemplateMatcherActionEnum + { + /// + /// Только сгенерировать недостающие шаблоны(можно использовать IsUnused) + /// + Create, + /// + /// Обновить существующие шаблоны без сохдания новых(имя шаблона, новая Job и т.д.) + /// + Update + } +} diff --git a/PARR.Constants/TemplateStatusTypeEnum.cs b/PARR.Constants/TemplateStatusTypeEnum.cs new file mode 100644 index 00000000..f802cd16 --- /dev/null +++ b/PARR.Constants/TemplateStatusTypeEnum.cs @@ -0,0 +1,9 @@ +namespace PARR.Constants +{ + public enum TemplateStatusTypeEnum + { + Used = 0, + Unused = 1, + Updating =2 + } +} diff --git a/PARR.DAL/Context/DataContext.cs b/PARR.DAL/Context/DataContext.cs index 6f789297..29fcb4b5 100644 --- a/PARR.DAL/Context/DataContext.cs +++ b/PARR.DAL/Context/DataContext.cs @@ -24,6 +24,7 @@ namespace PARR.DAL.Context public DbSet