75 lines
2.4 KiB
JavaScript

import { ROLES_NAME_ID } from "../../../constants/constants";
const ADMIN_ROLES = [ROLES_NAME_ID.admin];
const DFIP_ROLES = [ROLES_NAME_ID.admin, ROLES_NAME_ID.executor_dfip, ROLES_NAME_ID.executor_durrs];
const ALL_ROLES = [
ROLES_NAME_ID.admin,
ROLES_NAME_ID.executor_rf,
ROLES_NAME_ID.executor_dfip,
ROLES_NAME_ID.executor_durrs,
];
// Матрица доступа к полям первой таблицы.
export const FIRST_TABLE_FIELD_ACCESS = {
name: ADMIN_ROLES,
org_unit_id: ALL_ROLES,
status: DFIP_ROLES,
technical_number: [],
object_address: ALL_ROLES,
vsp_format: ALL_ROLES,
placement_type: ALL_ROLES,
staff_count: ALL_ROLES,
total_area: ALL_ROLES,
project_type: ALL_ROLES,
krf_decision_date: ALL_ROLES,
fk_decision_date: ALL_ROLES,
board_decision_date: ALL_ROLES,
open_relocate_close_date: ALL_ROLES,
funding_by_ko_decision: DFIP_ROLES,
year: ADMIN_ROLES,
is_in_plan: DFIP_ROLES,
is_in_plan_q2: DFIP_ROLES,
is_in_plan_q3: DFIP_ROLES,
is_in_plan_q4: DFIP_ROLES,
development_block: DFIP_ROLES,
reserve_to_prrs_ahr: DFIP_ROLES,
reserve_to_prrs_kv: DFIP_ROLES,
};
// Поле становится доступным после заполнения предыдущего этапа согласования.
export const FIRST_TABLE_FIELD_DEPENDENCIES = {
fk_decision_date: "krf_decision_date",
board_decision_date: "fk_decision_date",
};
export const FIRST_TABLE_FIELD_VALUE_REQUIREMENTS = {
reserve_to_prrs_ahr: {
fieldKey: "_projectFundingByKoDecision",
value: "bank_reserve",
},
reserve_to_prrs_kv: {
fieldKey: "_projectFundingByKoDecision",
value: "bank_reserve",
},
};
export const canEditFirstTableField = (fieldKey, roleId) =>
FIRST_TABLE_FIELD_ACCESS[fieldKey]?.includes(roleId) ?? false;
const isFilled = (value) => value !== null && value !== undefined && value !== "";
export const hasReserveValuesInChildSmetas = (project) =>
(project?.sub_rows || []).some(
(smeta) => isFilled(smeta.reserve_to_prrs_ahr) || isFilled(smeta.reserve_to_prrs_kv),
);
export const isFirstTableFieldDependencySatisfied = (fieldKey, rowData) => {
const dependencyKey = FIRST_TABLE_FIELD_DEPENDENCIES[fieldKey];
if (dependencyKey && !rowData?.[dependencyKey]) return false;
const valueRequirement = FIRST_TABLE_FIELD_VALUE_REQUIREMENTS[fieldKey];
if (valueRequirement && rowData?.[valueRequirement.fieldKey] !== valueRequirement.value) return false;
return true;
};