using Tnsu.ApprovalRoute.Domain.Enums; namespace Tnsu.ApprovalRoute.Domain.Entities; public class TemplateRouteStep { public int Id { get; set; } public int OrderNo { get; set; } public string? ExecutorEmail { get; set; } public string? Position { get; set; } public ProjectRole? ProjectRole { get; set; } public HeadType? HeadType { get; set; } public RouteStepStatus Status { get; set; } = RouteStepStatus.Approval; public int RouteId { get; set; } public bool AllowReassignToOtherApprovers { get; set; } /// /// SLA этого шага в часах — перекрывает . /// null означает ИМЕННО «не задано, наследовать от типа заявки», а 0 — /// осознанное «напоминать сразу», поэтому поле обязано быть nullable и не /// должно получать значение по умолчанию. /// public int? SlaHours { get; set; } /// /// Спрашивать ли причину просрочки на этом шаге — перекрывает /// . Здесь тоже три состояния: /// null — наследовать от типа, true/false — явный выбор. /// public bool? AskOverdueReason { get; set; } /// Как объединяются между собой — не действует, если условий меньше двух. public ConditionsLogic ConditionsLogic { get; set; } = ConditionsLogic.And; /// Условия появления шага. Пусто — шаг применяется всегда. public List Conditions { get; set; } = []; public TemplateRoute? Route { get; set; } }