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
@@ -42,7 +42,7 @@ import {
IAttachmentInfo
} from '../../shared/attachments/attachments.service';
import { effectiveUserEmail } from '../../shared/impersonation';
import { getEmployeeOrganizations, ICompany, IEmployeeOrganization } from '../../shared/dictionary';
import { getEmployeeOrganizations, employeeCompanies } from '../../shared/dictionary';
import { friendlyErrorMessage } from '../../shared/diagnostics';
import { IRequestFormProps } from '../../models/types';
import {
@@ -120,16 +120,11 @@ const RecruitingSelectionForm: React.FC<IRequestFormProps> = ({
};
}, [editId, editListId, notifyCode, setSubmitError]);
// Компании ответственного (Employee/ByEmail.company/companyId) → предзаполнение
// «1.5 Организация» (Companies/CompanyPickerMulti). companyId из Employee/ByEmail
// совпадает с Id из Dictionary/Companies (тот же источник) — доп. запрос не нужен.
// Поле остаётся редактируемым: значения только ПРЕДЛАГАЮТСЯ, как и DepartmentName.
const toCompanies = (records: IEmployeeOrganization[]): ICompany[] =>
records.filter((r) => r.companyId && r.company).map((r) => ({ Id: r.companyId, Name: r.company }));
// Новая заявка — по умолчанию ответственный: сам подающий, подразделение и
// организация — из Employee/ByEmail (Section/company), как в остальных формах
// с авто-«Организацией» (см. shared/dictionary/employeeOrganizations.service.ts).
// «1.5 Организация» остаётся редактируемой: значения только ПРЕДЛАГАЮТСЯ,
// как и DepartmentName.
useEffect(() => {
if (editId) {
return;
@@ -143,7 +138,7 @@ const RecruitingSelectionForm: React.FC<IRequestFormProps> = ({
setData((prev) => ({
...prev,
DepartmentName: prev.DepartmentName || records[0]?.section || prev.DepartmentName,
Companies: prev.Companies.length > 0 ? prev.Companies : toCompanies(records)
Companies: prev.Companies.length > 0 ? prev.Companies : employeeCompanies(records)
}));
}
})
@@ -166,7 +161,7 @@ const RecruitingSelectionForm: React.FC<IRequestFormProps> = ({
setData((prev) => ({
...prev,
DepartmentName: records[0]?.section || prev.DepartmentName,
Companies: toCompanies(records)
Companies: employeeCompanies(records)
}))
)
.catch(() => undefined);