Files
tnsu-approval-route/backend/Tnsu.ApprovalRoute.Application/TemplateRoutes/ResolveTemplateRouteDto.cs
T
gorbenko.pavel 547702fda8
Tests / frontend-test (pull_request) Successful in 44s
Tests / backend-test (pull_request) Successful in 3m12s
переработана логика
2026-08-13 16:31:15 +05:00

56 lines
3.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using Tnsu.ApprovalRoute.Domain.Enums;
namespace Tnsu.ApprovalRoute.Application.TemplateRoutes;
/// <param name="SlaHours">
/// ДЕЙСТВУЮЩИЙ SLA шага в часах — наследование уже применено: значение шага, а
/// если на шаге не задано, то значение типа заявки. null означает, что SLA не
/// настроен нигде, то есть напоминаний по этому шагу не будет.
/// Резолв отдаёт именно итоговое значение, чтобы вызывающая сторона
/// (request-portal) просто записала его в строку списка согласования и не
/// повторяла у себя правило наследования.
/// </param>
/// <param name="AskOverdueReason">
/// Спрашивать ли причину просрочки — так же с уже применённым наследованием.
/// </param>
public sealed record ResolvedRouteStepDto(
int Id,
int OrderNo,
string? ExecutorEmail,
string? Position,
bool AllowReassignToOtherApprovers,
string? Warning = null,
int? SlaHours = null,
bool? AskOverdueReason = null);
/// <param name="Warning">
/// Предупреждение уровня всего резолва (не привязано к конкретному шагу) — например,
/// в маршруте есть шаг с условием по полю IsManager, а в заявке не передано значение
/// поля Position, из которого IsManager вычисляется. Это не ошибка (резолв всё равно
/// отработал, IsManager просто посчитался как «false»), но может означать, что
/// вызывающая сторона забыла передать поле, и шаг из-за этого не появился, хотя должен был.
/// </param>
public sealed record ResolveTemplateRouteResultDto(
int RouteId,
bool RequiresControl,
IReadOnlyList<ResolvedRouteStepDto> Steps,
string? Warning = null);
/// <summary>Значение поля списка SharePoint (field_name шага) для проверки условий шагов при resolve.</summary>
public sealed record ResolveFieldValueDto(string FieldName, string Value);
/// <param name="DepartmentId">
/// Отдел для шагов с HeadType.DepartmentHead ("руководитель указанного отдела") —
/// не выводится из инициатора, поэтому должен быть передан явно. Необязателен:
/// если в маршруте нет такого шага, поле не нужно; если есть, а поле не
/// передано — шаг не резолвится и получает предупреждение (см.
/// TemplateRouteService.ResolveStepAsync), весь запрос при этом не падает.
/// </param>
public sealed record ResolveTemplateRouteRequest(
int RequestTypeId,
string? UserEmail,
Guid? ProjectId,
RouteStepStatus Status,
IReadOnlyList<ResolveFieldValueDto>? FieldValues = null,
Guid? DepartmentId = null);