75 lines
2.4 KiB
JavaScript
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;
|
|
};
|