5d7503209a
Абстрактный базовый класс + два sealed-наследника вместо одного DTO с опциональными полями под обе категории — так специфичные для каждого вида напоминания поля не путаются с полями другого вида. Полиморфная сериализация System.Text.Json ([JsonPolymorphic]/[JsonDerivedType]) нужна, иначе список IReadOnlyList<ReminderDto> сериализовался бы только по общим полям базового класса.
24 lines
1.1 KiB
C#
24 lines
1.1 KiB
C#
namespace Tnsu.ApprovalRoute.Application.Reminders;
|
|
|
|
/// <param name="Email">Согласующий/исполнитель из строки списка — кому напоминать.</param>
|
|
/// <param name="HoursOverdue">
|
|
/// На сколько часов просрочен шаг: сейчас минус (активация шага + SLA).
|
|
/// Выходные не учитываются — считаются календарные часы.
|
|
/// </param>
|
|
/// <param name="AskOverdueReason">
|
|
/// Спрашивать ли у пользователя причину просрочки. Значение уже с применённым
|
|
/// наследованием (шаг перекрывает тип заявки).
|
|
/// </param>
|
|
public sealed record ApprovalOverdueReminderDto(
|
|
string Email,
|
|
int HoursOverdue,
|
|
bool AskOverdueReason,
|
|
string Url,
|
|
int RequestTypeId,
|
|
string RequestTypeName,
|
|
int RequestId,
|
|
string Status,
|
|
string? RequestUniqueCode)
|
|
: ReminderDto(
|
|
ReminderCategory.ApprovalOverdue, Url, RequestTypeId, RequestTypeName, RequestId, Status, RequestUniqueCode);
|