5d7503209a
Абстрактный базовый класс + два sealed-наследника вместо одного DTO с опциональными полями под обе категории — так специфичные для каждого вида напоминания поля не путаются с полями другого вида. Полиморфная сериализация System.Text.Json ([JsonPolymorphic]/[JsonDerivedType]) нужна, иначе список IReadOnlyList<ReminderDto> сериализовался бы только по общим полям базового класса.
26 lines
1.5 KiB
C#
26 lines
1.5 KiB
C#
namespace Tnsu.ApprovalRoute.Application.Reminders;
|
|
|
|
/// <param name="ManagerEmail">Email руководителя принимаемого сотрудника — кому напоминать.</param>
|
|
/// <param name="CandidateEmail">Email принимаемого сотрудника (см. ReminderService.GetProbationEndingAsync).</param>
|
|
/// <param name="CandidateName">ФИО принимаемого сотрудника (колонка CandidateName списка данных).</param>
|
|
/// <param name="ProbationPeriod">Текст испытательного срока (колонка ProbationPeriod).</param>
|
|
/// <param name="HireDate">Дата приёма (колонка HireDate).</param>
|
|
/// <param name="ProbationEndsAt">Дата окончания испытательного срока (HireDate + срок).</param>
|
|
/// <param name="DaysUntilProbationEnds">Сколько дней осталось до конца испытательного срока.</param>
|
|
public sealed record ProbationEndingReminderDto(
|
|
string ManagerEmail,
|
|
string CandidateEmail,
|
|
string CandidateName,
|
|
string? ProbationPeriod,
|
|
DateTimeOffset HireDate,
|
|
DateTimeOffset ProbationEndsAt,
|
|
int DaysUntilProbationEnds,
|
|
string Url,
|
|
int RequestTypeId,
|
|
string RequestTypeName,
|
|
int RequestId,
|
|
string Status,
|
|
string? RequestUniqueCode)
|
|
: ReminderDto(
|
|
ReminderCategory.ProbationEnding, Url, RequestTypeId, RequestTypeName, RequestId, Status, RequestUniqueCode);
|