feat(api): фильтр шаблонов по статусу синхронизации
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
using PARR.Constants;
|
using PARR.Constants;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace PARR.API.Contracts.V1.Requests.Queries
|
namespace PARR.API.Contracts.V1.Requests.Queries
|
||||||
{
|
{
|
||||||
@@ -24,5 +25,30 @@ namespace PARR.API.Contracts.V1.Requests.Queries
|
|||||||
/// StatusType
|
/// StatusType
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public TemplateStatusTypeEnum? StatusTypeId { get; set; }
|
public TemplateStatusTypeEnum? StatusTypeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Статус синхронизации шаблонов и расписаний
|
||||||
|
/// </summary>
|
||||||
|
public TemplateQuerySyncStatusEnum? SyncStatus { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Статус синхронизации шаблонов и расписаний
|
||||||
|
/// </summary>
|
||||||
|
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||||
|
public enum TemplateQuerySyncStatusEnum
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Ожидает синхронизации
|
||||||
|
/// </summary>
|
||||||
|
Waiting = 0,
|
||||||
|
/// <summary>
|
||||||
|
/// Выполнена синхронизация
|
||||||
|
/// </summary>
|
||||||
|
Complete = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// Ошибка синхронизации
|
||||||
|
/// </summary>
|
||||||
|
Error = 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,25 @@ namespace PARR.API.Controllers.V1
|
|||||||
if (filter.StatusTypeId.HasValue)
|
if (filter.StatusTypeId.HasValue)
|
||||||
query = query.Where(t => t.StatusTypeId == filter.StatusTypeId);
|
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();
|
var templates = await templateService.GetPage(query, paginationFilter).ToListAsync();
|
||||||
|
|
||||||
if (!templates.Any())
|
if (!templates.Any())
|
||||||
|
|||||||
Reference in New Issue
Block a user