From 87a317e87858369c88f5cb2bb0599fa5582ea9ae Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Fri, 12 Dec 2025 10:45:20 +1000 Subject: [PATCH] =?UTF-8?q?feat(api):=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82?= =?UTF-8?q?=D1=80=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=81=D1=82=D0=B0=D1=82=D1=83=D1=81=D1=83=20?= =?UTF-8?q?=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE=D0=BD=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V1/Requests/Queries/TemplateQuery.cs | 26 +++++++++++++++++++ PARR.API/Controllers/V1/TemplateController.cs | 19 ++++++++++++++ 2 files changed, 45 insertions(+) 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())