Files
tnsu-approval-route/backend/Tnsu.ApprovalRoute.Application/Reminders/RemindersOptions.cs
T
gorbenko.pavel b9aac36a2b
Tests / frontend-test (pull_request) Successful in 45s
Tests / backend-test (pull_request) Successful in 1m44s
теперь 7 дней
2026-08-27 16:26:32 +05:00

59 lines
4.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace Tnsu.ApprovalRoute.Application.Reminders;
public sealed class RemindersOptions
{
/// <summary>
/// Шаблон ссылки на заявку. Подстановки: {siteUrl}, {pageUrl}, {requestId},
/// {listId}, {nav}.
///
/// Портал — одностраничный и живёт в КОРНЕ сайта, отдельного пути к странице
/// нет; всё состояние передаётся параметрами запроса (см. shared/routing.ts
/// в request-portal). Пример живой ссылки:
/// https://tnsukz.sharepoint.com/sites/requests?rpnav=approvals&amp;rpmode=approve&amp;rptype=it-1c-ticket&amp;rpid=11&amp;rplist=%2Fsites%2Frequests%2FLists%2F...
///
/// {pageUrl} — это PageUrl типа заявки, то есть КЛЮЧ ФОРМЫ (it-1c-ticket), а
/// не путь к странице: в портале он и подставляется в rptype.
///
/// {listId} — server-relative url КОНКРЕТНОЙ партиции, где лежит строка
/// согласования (параметр rplist). Без него портал открывал бы заявку так,
/// будто она лежит в ТЕКУЩЕЙ партиции типа, и архивная заявка не находилась
/// бы вовсе (см. IRoute.listId в request-portal/shared/routing.ts).
///
/// Вынесено в конфигурацию, чтобы смена разметки ссылок в портале правилась
/// настройкой, а не пересборкой сервиса.
/// </summary>
public string RequestUrlTemplate { get; set; } =
"{siteUrl}?rpnav={nav}&rpmode=approve&rptype={pageUrl}&rpid={requestId}&rplist={listId}";
/// <summary>
/// PageUrl типа заявки «Заявка на приём» (см. request-portal, forms/RecruitingHire/model.ts,
/// FORM_ID) — по нему ищется RequestType для напоминаний об окончании испытательного срока.
/// Не завязано на SlaHours: этот вид напоминаний не про просрочку шага согласования.
/// </summary>
public string RecruitingHirePageUrl { get; set; } = "recruiting-hire";
/// <summary>
/// За сколько дней до конца испытательного срока присылать напоминание — неделя,
/// чтобы у руководителя было время подготовить решение по итогам срока.
///
/// Дни КАЛЕНДАРНЫЕ, не рабочие: напоминание строится ровно в тот день, когда до
/// конца срока остаётся столько дней, и попади он на выходной — уйдёт в выходной.
/// </summary>
public int ProbationReminderDaysBeforeEnd { get; set; } = 7;
/// <summary>
/// Куда ведёт ссылка в напоминании об окончании испытательного срока — на
/// раздел «Подать заявку» портала, а НЕ на саму заявку на приём: от
/// руководителя по этому напоминанию требуется завести НОВУЮ заявку (решение
/// по итогам испытательного срока), а не открыть уже закрытую старую.
///
/// Поэтому ссылка константная, без подстановок: адрес конкретной формы в
/// портал вообще не передать — параметр rptype без rpid/rpsource
/// игнорируется, и маршрут сваливается в раздел «Подать заявку» (см.
/// parseRoute в request-portal/shared/routing.ts). Отдельная настройка, а не
/// хардкод, — чтобы адрес правился конфигурацией.
/// </summary>
public string ProbationReminderUrl { get; set; } =
"https://tnsukz.sharepoint.com/sites/requests?rpnav=new";
}