import { WebPartContext } from '@microsoft/sp-webpart-base'; import { getEmployeeOrganizations } from '../dictionary'; /** Отдел + организация согласующего — для колонок «Отдел»/«Организация» матрицы. */ export interface IApproverOrgInfo { department: string; organization: string; } /** * Резолвер для useMatrixEditor: отдел и организация — ОДНИМ источником * (Employee/ByEmail, тот же, что и «авто-Организация» в Vacation/UnpaidLeave/…), * а не двумя разными API (иначе строка матрицы собиралась бы по кускам). Один * сотрудник может числиться в нескольких организациях — берём первую запись, * как и остальные формы с авто-подстановкой (см. shared/dictionary). * * email не найден в кадровом справочнике (404) или пуст — getEmployeeOrganizations * отдаёт [], здесь это просто пустые отдел/организация, не ошибка матрицы. */ export function resolveApproverOrgInfo(context: WebPartContext): (email: string) => Promise { return async (email: string): Promise => { const records = await getEmployeeOrganizations(context, email); const first = records[0]; return { department: first?.section || '', organization: first?.company || '' }; }; }