namespace Tnsu.ApprovalRoute.Application.Approvals; /// /// Конвенция имён списков портала заявок: у каждой пары списков имя данных и имя /// согласования отличаются только суффиксом после длинного тире (см. /// Get-NumberedListTitle в request-portal/provisioning/Provision-Lists.ps1 — /// именно провижинер эти имена и ставит). /// /// Отдельным классом, а не приватным методом сервиса: правило нужно и /// напоминаниям (ReminderService), и автосогласованию (AutoApproveService), и /// разъехаться между ними оно не должно — переименование одного списка из пары /// молча оставило бы один из сценариев без строк. /// internal static class ApprovalListNaming { /// /// «Заявка на приём 1 — данные» → «Заявка на приём 1 — согласование». /// null — имя не по конвенции, список согласования по нему не найти. /// public static string? ApprovalListTitleFor(string dataListTitle) { var index = dataListTitle.LastIndexOf('—'); if (index < 0) return null; var suffix = dataListTitle[(index + 1)..].Trim(); return suffix.Equals("данные", StringComparison.OrdinalIgnoreCase) ? $"{dataListTitle[..index].TrimEnd()} — согласование" : null; } }