diff --git a/PARR.API/Contracts/V1/ApiRoutes.cs b/PARR.API/Contracts/V1/ApiRoutes.cs
index 3108d749..2743bcc0 100644
--- a/PARR.API/Contracts/V1/ApiRoutes.cs
+++ b/PARR.API/Contracts/V1/ApiRoutes.cs
@@ -303,6 +303,8 @@
public const string WorkGroup = BaseStat + "/workload/work-groups";
public const string ResponseArea = BaseStat + "/workload/response-areas";
+
+ public const string ReportInfo = BaseStat + "/workload/report-info";
}
#endregion
@@ -564,6 +566,15 @@
#endregion
+ #region Tasks
+
+ public static class Tasks
+ {
+ public const string GetActiveTasks = Base + "/tasks/active";
+ }
+
+ #endregion
+
}
}
diff --git a/PARR.API/Contracts/V1/Responses/ActiveTaskResponse.cs b/PARR.API/Contracts/V1/Responses/ActiveTaskResponse.cs
new file mode 100644
index 00000000..cc7b8310
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/ActiveTaskResponse.cs
@@ -0,0 +1,9 @@
+namespace PARR.API.Contracts.V1.Responses
+{
+ public record ActiveTaskResponse : TaskItemBaseResponse
+ {
+ public required TaskItemTypeResponse Type { get; init; }
+
+ public required TaskItemStatusResponse Status { get; init; }
+ }
+}
diff --git a/PARR.API/Contracts/V1/Responses/Statistics/StatWorkloadCacheInfoResponse.cs b/PARR.API/Contracts/V1/Responses/Statistics/StatWorkloadCacheInfoResponse.cs
new file mode 100644
index 00000000..00798498
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/Statistics/StatWorkloadCacheInfoResponse.cs
@@ -0,0 +1,14 @@
+using PARR.Domain.DTOs.Workload;
+
+namespace PARR.API.Contracts.V1.Responses.Statistics
+{
+ ///
+ /// Инфо о формирование КЭШ для отчета Workload
+ ///
+ public record StatWorkloadCacheInfoResponse
+ {
+ public WorkloadCacheInfo.StatusEnum Status { get; set; }
+
+ public DateTimeOffset? Date { get; init; }
+ }
+}
diff --git a/PARR.API/Contracts/V1/Responses/TaskItemResponse.cs b/PARR.API/Contracts/V1/Responses/TaskItemResponse.cs
new file mode 100644
index 00000000..caf99b0d
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/TaskItemResponse.cs
@@ -0,0 +1,21 @@
+namespace PARR.API.Contracts.V1.Responses
+{
+ public record TaskItemBaseResponse
+ {
+ public Guid Id { get; init; }
+
+ public DateTimeOffset DateCreated { get; init; }
+
+ public DateTimeOffset? DateModified { get; init; }
+
+ public int RetryCount { get; init; }
+
+ public DateTimeOffset? ProcessedAt { get; init; }
+ }
+
+ public record TaskItemResponse : TaskItemBaseResponse
+ {
+
+ }
+
+}
diff --git a/PARR.API/Contracts/V1/Responses/TaskItemStatusResponse.cs b/PARR.API/Contracts/V1/Responses/TaskItemStatusResponse.cs
new file mode 100644
index 00000000..69d949cb
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/TaskItemStatusResponse.cs
@@ -0,0 +1,13 @@
+using PARR.Domain.Enums;
+
+namespace PARR.API.Contracts.V1.Responses
+{
+ public record TaskItemStatusResponse
+ {
+ public TaskItemStatusEnum Code { get; init; }
+
+ public required string Name { get; init; }
+
+ public required string Description { get; init; }
+ }
+}
diff --git a/PARR.API/Contracts/V1/Responses/TaskItemTypeResponse.cs b/PARR.API/Contracts/V1/Responses/TaskItemTypeResponse.cs
new file mode 100644
index 00000000..6539114f
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/TaskItemTypeResponse.cs
@@ -0,0 +1,33 @@
+using PARR.Domain.Enums;
+
+namespace PARR.API.Contracts.V1.Responses
+{
+ public record TaskItemTypeResponse
+ {
+ public TaskTypeEnum Code { get; init; }
+
+ public required string Name { get; init; }
+
+ public required string Description { get; init; }
+
+ ///
+ /// Максимальное кол-во попыток
+ ///
+ public int MaxRetries { get; init; }
+
+ ///
+ /// Максимальное время выполнения
+ ///
+ public int MaxExecutionTimeMinutes { get; init; }
+
+ ///
+ /// Одновременно может быть только одна задача или несколько
+ ///
+ public bool IsSingleton { get; init; }
+
+ ///
+ /// Сколько дней хранить в БД
+ ///
+ public int RetentionDays { get; init; }
+ }
+}
diff --git a/PARR.API/Controllers/V1/GeneratorTemplateController.cs b/PARR.API/Controllers/V1/GeneratorTemplateController.cs
deleted file mode 100644
index 9a832002..00000000
--- a/PARR.API/Controllers/V1/GeneratorTemplateController.cs
+++ /dev/null
@@ -1,95 +0,0 @@
-namespace PARR.API.Controllers.V1
-{
- //[Authorize(Roles = ParrRoles.Administrator.Role)]
- //public class GeneratorTemplateController : BaseApiController
- //{
- // private readonly IValidator validator;
- // private readonly IRabbitService mqService;
- // private readonly IUriService uriService;
- // private readonly MqSettings mqSettings;
- // private readonly IClientService clientService;
-
- // public GeneratorTemplateController(
- // IValidator validator,
- // IRabbitService mqService,
- // IUriService uriService,
- // MqSettings mqSettings,
- // IClientService clientService
- // )
- // {
- // this.validator = validator;
- // this.mqService = mqService;
- // this.uriService = uriService;
- // this.mqSettings = mqSettings;
- // this.clientService = clientService;
- // }
-
- // /// !!!!!!!!!! Это старый контроллер, удалить !!!!!!!!!!
-
-
- // ///
- // /// Запрос на генерацию шаблонов
- // ///
- // ///
- // [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 result = true;
-
- // request.Ek.ForEach(ek =>
- // {
- // //todo: проверить в ForEach(async status - отрабатывает ли нормально async, возможно надо переделать в обычный foreach
- // request.Status.ForEach(async status =>
- // {
- // var obj = new GeneratorTemplateMq
- // {
- // Action = request.Action,
- // ApplicationId = request.ApplicationId,
- // Ek = ek,
- // WorkId = request.WorkId,
- // StatusEk = status,
- // IsActiveTemplate = request.IsActiveTemplate,
- // IsActiveSchedule = request.IsActiveSchedule,
- // HistoryInitiator = new HistoryInitiator { InitiatorIp = clientService.GetClientIp()?.ToString(), InitiatorParrComponentId = ParrComponentsEnum.Api }
- // };
-
- // //var msg = JsonSerializer.Serialize(obj);
-
- // //var _result = await mqService.SendAsync(mqSettings.GenerateTemplates, new[] { msg });
- // var _result = await mqService.SendAsync(mqSettings.GenerateTemplates, new List