ReminderDto: разделить на ApprovalOverdueReminderDto и ProbationEndingReminderDto
Абстрактный базовый класс + два sealed-наследника вместо одного DTO с опциональными полями под обе категории — так специфичные для каждого вида напоминания поля не путаются с полями другого вида. Полиморфная сериализация System.Text.Json ([JsonPolymorphic]/[JsonDerivedType]) нужна, иначе список IReadOnlyList<ReminderDto> сериализовался бы только по общим полям базового класса.
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
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);
|
||||
Reference in New Issue
Block a user