refactor: преобразование организаций сотрудника в компании вынесено в shared/dictionary

employeeCompanies() нужен теперь не только подбору, но и заявке на рабочее
место — одна реализация вместо копий в каждой форме.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Тимур Городецкий
2026-09-25 17:38:50 +05:00
parent 05b1163484
commit 0989168476
3 changed files with 20 additions and 11 deletions
@@ -2,6 +2,7 @@ import { AadHttpClient, HttpClientResponse } from '@microsoft/sp-http';
import { WebPartContext } from '@microsoft/sp-webpart-base';
import { APPROVAL_API_CLIENT_ID, DICTIONARY_API_BASE_URL } from '../config';
import { IEmployeeOrganization } from './models/IEmployeeOrganization';
import { ICompany } from './models/ICompany';
// GET /Employee/ByEmail?Email=... — организации сотрудника (см. IEmployeeOrganization:
// один email может вернуть несколько записей). 404 (email не найден в системе
@@ -57,3 +58,12 @@ export function getEmployeeOrganizations(context: WebPartContext, email: string)
export function formatEmployeeOrganizations(records: IEmployeeOrganization[]): string {
return records.map((r) => (r.position ? `${r.company} — ${r.position}` : r.company)).join('\n');
}
/**
* Организации сотрудника → значение для CompanyPickerMulti. companyId из
* Employee/ByEmail совпадает с Id в Dictionary/Companies (тот же источник),
* поэтому доп. запрос в справочник не нужен. Записи без компании пропускаем.
*/
export function employeeCompanies(records: IEmployeeOrganization[]): ICompany[] {
return records.filter((r) => r.companyId && r.company).map((r) => ({ Id: r.companyId, Name: r.company }));
}
@@ -10,7 +10,11 @@ export { getCompanies } from './companies.service';
export type { ICompany } from './models/ICompany';
export { CompanyPickerMulti } from './ui/CompanyPickerMulti';
export type { ICompanyPickerMultiProps } from './ui/CompanyPickerMulti';
export { getEmployeeOrganizations, formatEmployeeOrganizations } from './employeeOrganizations.service';
export {
getEmployeeOrganizations,
formatEmployeeOrganizations,
employeeCompanies
} from './employeeOrganizations.service';
export type { IEmployeeOrganization } from './models/IEmployeeOrganization';
export { getNomenclature } from './nomenclature.service';
export type { INomenclatureRow } from './models/INomenclatureRow';