From 5e5242942e4470607f6af6c521a4245148313e85 Mon Sep 17 00:00:00 2001 From: "gorbenko.pavel" Date: Mon, 10 Aug 2026 11:06:11 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B5=D0=B7=D0=B4=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TnsuPortal/HttpTnsuPortalClient.cs | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/backend/src/Tnsu.ApprovalRoute.Infrastructure/TnsuPortal/HttpTnsuPortalClient.cs b/backend/src/Tnsu.ApprovalRoute.Infrastructure/TnsuPortal/HttpTnsuPortalClient.cs index 0c46637..5805898 100644 --- a/backend/src/Tnsu.ApprovalRoute.Infrastructure/TnsuPortal/HttpTnsuPortalClient.cs +++ b/backend/src/Tnsu.ApprovalRoute.Infrastructure/TnsuPortal/HttpTnsuPortalClient.cs @@ -56,15 +56,18 @@ public sealed class HttpTnsuPortalClient( return executors; } - // STUB(department-head): в api.tnsu.kz пока нет эндпоинта «руководитель отдела - // по Id отдела» — до его появления просто возвращаем захардкоженный email, - // чтобы можно было отладить всю остальную логику HeadType.DepartmentHead - // (resolve, warning-и, UI) не дожидаясь портала. Когда эндпоинт появится — - // заменить тело этого метода на реальный вызов через GetAsync (по - // образцу остальных методов этого класса); сигнатуру и вызывающий код - // (TemplateRouteService.ResolveStepAsync) менять не придётся. - public Task GetDepartmentHeadEmailAsync(Guid departmentId, CancellationToken cancellationToken) => - Task.FromResult("gorbenko.pavel@tnsu.kz"); + // Ответ — {"managerEmail": "..."} (та же форма, что у /Employee/Manager), + // а НЕ форма сотрудника (EmployeeResponse) — проверено живым вызовом + // (GET /Employee/DepartmentHead?departmentId=... на отделе "АУП"/"ТОО + // Монтажник-Т" вернул именно managerEmail). 404 с телом {"error": "..."} + // на отделах без руководителя уже отфильтровывается общим GetAsync. + public async Task GetDepartmentHeadEmailAsync(Guid departmentId, CancellationToken cancellationToken) + { + var manager = await GetAsync( + $"/Employee/DepartmentHead?departmentId={Uri.EscapeDataString(departmentId.ToString())}", cancellationToken); + + return manager?.ManagerEmail; + } private async Task GetAsync(string requestUri, CancellationToken cancellationToken) where T : class {