Files
tnsu-approval-route/backend/Tnsu.ApprovalRoute.Application/Reminders/ReminderDto.cs
T
gorbenko.pavel 874e41990c
Tests / frontend-test (pull_request) Successful in 47s
Tests / backend-test (pull_request) Successful in 1m34s
промежуточный коммит
2026-08-26 17:17:47 +05:00

53 lines
3.5 KiB
C#

namespace Tnsu.ApprovalRoute.Application.Reminders;
/// <param name="Email">Согласующий/исполнитель из строки списка — кому напоминать.</param>
/// <param name="HoursOverdue">
/// На сколько часов просрочен шаг: сейчас минус (активация шага + SLA).
/// Выходные не учитываются — считаются календарные часы.
/// </param>
/// <param name="Url">Ссылка на заявку, требующую решения.</param>
/// <param name="AskOverdueReason">
/// Спрашивать ли у пользователя причину просрочки. Значение уже с применённым
/// наследованием (шаг перекрывает тип заявки).
/// </param>
/// <param name="Status">Статус просроченного шага (ApprovalStatus строки списка «… — согласование»).</param>
/// <param name="RequestUniqueCode">
/// Уникальный код заявки (колонка RequestUniqueCode списка данных) — null, если у
/// заявки его нет или строка данных не найдена.
/// </param>
/// <param name="Category">
/// Вид напоминания. Необязательный — параметр добавлен позже остальных, поэтому по
/// умолчанию <see cref="ReminderCategory.None"/> («не указана»): старые вызовы
/// конструктора и потребители, ничего не знающие о категориях, продолжают работать
/// как раньше.
/// </param>
/// <param name="ManagerEmail">
/// Только для <see cref="ReminderCategory.ProbationEnding"/> — email руководителя
/// принимаемого сотрудника (см. ReminderService.GetProbationEndingAsync). Для
/// остальных категорий — null.
/// </param>
/// <param name="CandidateEmail">Только для ProbationEnding — email принимаемого сотрудника.</param>
/// <param name="CandidateName">Только для ProbationEnding — ФИО принимаемого сотрудника (колонка CandidateName).</param>
/// <param name="ProbationPeriod">Только для ProbationEnding — текст испытательного срока (колонка ProbationPeriod).</param>
/// <param name="HireDate">Только для ProbationEnding — дата приёма (колонка HireDate).</param>
/// <param name="ProbationEndsAt">Только для ProbationEnding — дата окончания испытательного срока (HireDate + срок).</param>
/// <param name="DaysUntilProbationEnds">Только для ProbationEnding — сколько дней осталось до конца испытательного срока.</param>
public sealed record ReminderDto(
string Email,
int HoursOverdue,
string Url,
bool AskOverdueReason,
int RequestTypeId,
string RequestTypeName,
int RequestId,
string Status,
string? RequestUniqueCode,
ReminderCategory Category = ReminderCategory.None,
string? ManagerEmail = null,
string? CandidateEmail = null,
string? CandidateName = null,
string? ProbationPeriod = null,
DateTimeOffset? HireDate = null,
DateTimeOffset? ProbationEndsAt = null,
int? DaysUntilProbationEnds = null);