diff --git a/PARR.API/Contracts/V1/Requests/Queries/TemplateQuery.cs b/PARR.API/Contracts/V1/Requests/Queries/TemplateQuery.cs
index ce7bc843..a80721b6 100644
--- a/PARR.API/Contracts/V1/Requests/Queries/TemplateQuery.cs
+++ b/PARR.API/Contracts/V1/Requests/Queries/TemplateQuery.cs
@@ -1,4 +1,5 @@
using PARR.Constants;
+using System.Text.Json.Serialization;
namespace PARR.API.Contracts.V1.Requests.Queries
{
@@ -24,5 +25,30 @@ namespace PARR.API.Contracts.V1.Requests.Queries
/// StatusType
///
public TemplateStatusTypeEnum? StatusTypeId { get; set; }
+
+ ///
+ /// Статус синхронизации шаблонов и расписаний
+ ///
+ public TemplateQuerySyncStatusEnum? SyncStatus { get; set; }
+ }
+
+ ///
+ /// Статус синхронизации шаблонов и расписаний
+ ///
+ [JsonConverter(typeof(JsonStringEnumConverter))]
+ public enum TemplateQuerySyncStatusEnum
+ {
+ ///
+ /// Ожидает синхронизации
+ ///
+ Waiting = 0,
+ ///
+ /// Выполнена синхронизация
+ ///
+ Complete = 1,
+ ///
+ /// Ошибка синхронизации
+ ///
+ Error = 2
}
}
diff --git a/PARR.API/Controllers/V1/TemplateController.cs b/PARR.API/Controllers/V1/TemplateController.cs
index 99bd201f..91b6078a 100644
--- a/PARR.API/Controllers/V1/TemplateController.cs
+++ b/PARR.API/Controllers/V1/TemplateController.cs
@@ -79,6 +79,25 @@ namespace PARR.API.Controllers.V1
if (filter.StatusTypeId.HasValue)
query = query.Where(t => t.StatusTypeId == filter.StatusTypeId);
+ #region Статус синхронизации
+
+ switch (filter.SyncStatus)
+ {
+ case (TemplateQuerySyncStatusEnum.Waiting):
+ query = query.Where(t => t.RobotConfigurations.Any(x => x.TaskStatusCode != (int)TaskStatusEnum.Ok));
+ break;
+ case (TemplateQuerySyncStatusEnum.Complete):
+ query = query.Where(t => t.RobotConfigurations.All(x => x.TaskStatusCode == (int)TaskStatusEnum.Ok));
+ break;
+ case (TemplateQuerySyncStatusEnum.Error):
+ query = query.Where(t => t.RobotConfigurations.Any(x => x.RobotStatusCode == (int)RobotStatusEnum.Error));
+ break;
+ default:
+ break;
+ }
+
+ #endregion
+
var templates = await templateService.GetPage(query, paginationFilter).ToListAsync();
if (!templates.Any())