diff --git a/backend/src/Tnsu.ApprovalRoute.Api/appsettings.json b/backend/src/Tnsu.ApprovalRoute.Api/appsettings.json index f974e4b..12fe82b 100644 --- a/backend/src/Tnsu.ApprovalRoute.Api/appsettings.json +++ b/backend/src/Tnsu.ApprovalRoute.Api/appsettings.json @@ -9,7 +9,6 @@ "Postgres": "Host=db-master.tnsu.kz;Database=tnsu_approval_route;Username=dbuser;Password=p}{6{Pa]{JQwP1H" }, "Entra": { - "TenantId": "b4c2af35-bfd6-4cff-9af9-556efb53e65a", "Audience": "9232d9e2-9807-4753-808f-07250e5474b0" }, 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 {