Несколько условий шага, объединяемых через И/ИЛИ (#16)
<html> <body> <!--StartFragment--> GetEmployeeByEmailAsync возвращает массив; новый HeadType.CompanyDirectors -- <!--EndFragment--> </body> </html>[GetEmployeeByEmailAsync возвращает массив; новый HeadType.CompanyDirectors](http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/commit/572749b4d7cc11bc8e1ef4184a93f18a14b710ab) --------- Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/16
This commit was merged in pull request #16.
This commit is contained in:
@@ -31,9 +31,11 @@ public class TemplateRouteStep
|
||||
/// </summary>
|
||||
public bool? AskOverdueReason { get; set; }
|
||||
|
||||
public string? FieldName { get; set; }
|
||||
public ComparisonOperator? Operation { get; set; }
|
||||
public string? Value { get; set; }
|
||||
/// <summary>Как объединяются <see cref="Conditions"/> между собой — не действует, если условий меньше двух.</summary>
|
||||
public ConditionsLogic ConditionsLogic { get; set; } = ConditionsLogic.And;
|
||||
|
||||
/// <summary>Условия появления шага. Пусто — шаг применяется всегда.</summary>
|
||||
public List<TemplateRouteStepCondition> Conditions { get; set; } = [];
|
||||
|
||||
public TemplateRoute? Route { get; set; }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using Tnsu.ApprovalRoute.Domain.Enums;
|
||||
|
||||
namespace Tnsu.ApprovalRoute.Domain.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Одно условие появления шага (см. <see cref="TemplateRouteStep.Conditions"/>) —
|
||||
/// сравнение значения поля заявки (<see cref="FieldName"/>) с <see cref="Value"/>
|
||||
/// через <see cref="Operation"/>. Несколько условий одного шага объединяются
|
||||
/// через <see cref="TemplateRouteStep.ConditionsLogic"/> (И/ИЛИ).
|
||||
/// </summary>
|
||||
public class TemplateRouteStepCondition
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
||||
public int StepId { get; set; }
|
||||
public TemplateRouteStep? Step { get; set; }
|
||||
|
||||
/// <summary>Порядок отображения в форме — на вычисление условия не влияет.</summary>
|
||||
public int OrderNo { get; set; }
|
||||
|
||||
public string FieldName { get; set; } = string.Empty;
|
||||
public ComparisonOperator Operation { get; set; }
|
||||
public string Value { get; set; } = string.Empty;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace Tnsu.ApprovalRoute.Domain.Enums;
|
||||
|
||||
/// <summary>
|
||||
/// Как объединяются условия шага (<see cref="Entities.TemplateRouteStep.Conditions"/>)
|
||||
/// между собой, если их несколько. Не действует, если условие одно или их нет вовсе.
|
||||
/// </summary>
|
||||
public enum ConditionsLogic
|
||||
{
|
||||
/// <summary>Шаг появляется, только если выполняются ВСЕ условия.</summary>
|
||||
And,
|
||||
|
||||
/// <summary>Шаг появляется, если выполняется ХОТЯ БЫ ОДНО условие.</summary>
|
||||
Or
|
||||
}
|
||||
@@ -15,5 +15,15 @@ public enum HeadType
|
||||
/// подчинённости самого инициатора. В маршруте не может быть больше одного
|
||||
/// шага с этим типом (см. TemplateRouteStepService).
|
||||
/// </summary>
|
||||
DepartmentHead
|
||||
DepartmentHead,
|
||||
|
||||
/// <summary>
|
||||
/// Директора ВСЕХ компаний, в которых числится инициатор (сотрудник может
|
||||
/// работать в нескольких компаниях — /Employee/ByEmail теперь возвращает
|
||||
/// массив). В отличие от остальных значений этого enum'а, один такой шаг
|
||||
/// резолвится в НЕСКОЛЬКО строк результата — по одной на каждую компанию
|
||||
/// инициатора, все с одним и тем же OrderNo (то есть параллельно, см.
|
||||
/// TemplateRouteService.ResolveStepAsync).
|
||||
/// </summary>
|
||||
CompanyDirectors
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user