Переезд на метод портала с департаментами #10

Merged
gorbenko.pavel merged 2 commits from department-id-method into main 2026-08-10 06:10:57 +00:00
Showing only changes of commit 5e5242942e - Show all commits
@@ -56,15 +56,18 @@ public sealed class HttpTnsuPortalClient(
return executors;
}
// STUB(department-head): в api.tnsu.kz пока нет эндпоинта «руководитель отдела
// по Id отдела» — до его появления просто возвращаем захардкоженный email,
// чтобы можно было отладить всю остальную логику HeadType.DepartmentHead
// (resolve, warning-и, UI) не дожидаясь портала. Когда эндпоинт появится —
// заменить тело этого метода на реальный вызов через GetAsync<T> (по
// образцу остальных методов этого класса); сигнатуру и вызывающий код
// (TemplateRouteService.ResolveStepAsync) менять не придётся.
public Task<string?> GetDepartmentHeadEmailAsync(Guid departmentId, CancellationToken cancellationToken) =>
Task.FromResult<string?>("gorbenko.pavel@tnsu.kz");
// Ответ — {"managerEmail": "..."} (та же форма, что у /Employee/Manager),
// а НЕ форма сотрудника (EmployeeResponse) — проверено живым вызовом
// (GET /Employee/DepartmentHead?departmentId=... на отделе "АУП"/"ТОО
// Монтажник-Т" вернул именно managerEmail). 404 с телом {"error": "..."}
// на отделах без руководителя уже отфильтровывается общим GetAsync<T>.
public async Task<string?> GetDepartmentHeadEmailAsync(Guid departmentId, CancellationToken cancellationToken)
{
var manager = await GetAsync<ManagerResponse>(
$"/Employee/DepartmentHead?departmentId={Uri.EscapeDataString(departmentId.ToString())}", cancellationToken);
return manager?.ManagerEmail;
}
private async Task<T?> GetAsync<T>(string requestUri, CancellationToken cancellationToken) where T : class
{