cfc2b393bd
- ReminderDto: базовый класс сузился до ReceiverEmail/ReceiverName/Url; RequestTypeId/RequestTypeName/RequestId/Status/RequestUniqueCode остались только в ApprovalOverdueReminderDto — ProbationEndingReminderDto они не нужны. Дискриминатор полиморфной сериализации ($type) больше не дублируется отдельным enum-полем Category. - ApprovalOverdueReminderDto: старый Email сохранён рядом с унаследованным ReceiverEmail (то же значение) — контракт можно переключать постепенно. - ApprovalRow/RowSelect: добавлен Title согласующего (TansuSiteApprover/Title) — заполняет ReceiverName для просроченных шагов, когда он есть в SharePoint. - EmployeeDirectorySnapshot.NameByEmail: обратный поиск ФИО руководителя по email — заполняет ReceiverName для напоминаний об испытательном сроке без лишнего похода в api.tnsu.kz (данные уже загружены для EmailOf). - GetProbationEndingAsync: испытательный срок не длиннее 6 месяцев, поэтому читаем только текущую и последнюю архивную партицию (не весь архив) и фильтруем строки по HireDate не старше 6 месяцев — экономим лишние запросы к SharePoint без потери актуальных заявок.
24 lines
1.4 KiB
C#
24 lines
1.4 KiB
C#
namespace Tnsu.ApprovalRoute.Application.Reminders;
|
|
|
|
/// <param name="ManagerEmail">
|
|
/// То же значение, что и унаследованный ReceiverEmail, — 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,
|
|
string? ReceiverName = null)
|
|
: ReminderDto(ManagerEmail, ReceiverName, Url);
|