Added RhData
This commit is contained in:
parent
8ee7b8a177
commit
dabe614fde
135
lib/4nk/models/RhData.ts
Normal file
135
lib/4nk/models/RhData.ts
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
import { isFileBlob, type FileBlob } from "./Data";
|
||||||
|
import type { RoleDefinition } from "./Roles";
|
||||||
|
|
||||||
|
export interface RhData {
|
||||||
|
folderNumber: string;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
nom_salarie: string;
|
||||||
|
poste: string;
|
||||||
|
num_secu: string;
|
||||||
|
message_private: string;
|
||||||
|
created_at: string;
|
||||||
|
updated_at: string;
|
||||||
|
types_documents: string[];
|
||||||
|
rhs: string[];
|
||||||
|
salaries: string[];
|
||||||
|
notes: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isRhData(data: any): data is RhData {
|
||||||
|
if (typeof data !== 'object' || data === null) return false;
|
||||||
|
|
||||||
|
const requiredStringFields = [
|
||||||
|
'folderNumber',
|
||||||
|
'name',
|
||||||
|
'description',
|
||||||
|
'nom_salarie',
|
||||||
|
'poste',
|
||||||
|
'num_secu',
|
||||||
|
'message_private',
|
||||||
|
'created_at',
|
||||||
|
'updated_at'
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const field of requiredStringFields) {
|
||||||
|
if (typeof data[field] !== 'string') return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const requiredArrayFields = [
|
||||||
|
'types_documents',
|
||||||
|
'rhs',
|
||||||
|
'salaries',
|
||||||
|
'notes',
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const field of requiredArrayFields) {
|
||||||
|
if (!Array.isArray(data[field]) || !data[field].every((item: any) => typeof item === 'string')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const emptyRhData: RhData = {
|
||||||
|
folderNumber: '',
|
||||||
|
name: '',
|
||||||
|
description: '',
|
||||||
|
nom_salarie: '',
|
||||||
|
poste: '',
|
||||||
|
num_secu: '',
|
||||||
|
message_private: '',
|
||||||
|
created_at: '',
|
||||||
|
updated_at: '',
|
||||||
|
types_documents: [],
|
||||||
|
rhs: [],
|
||||||
|
salaries: [],
|
||||||
|
notes: []
|
||||||
|
};
|
||||||
|
|
||||||
|
const rhDataFields: string[] = Object.keys(emptyRhData);
|
||||||
|
|
||||||
|
const RhPublicFields: string[] = [
|
||||||
|
'nom_salarie',
|
||||||
|
'poste'
|
||||||
|
];
|
||||||
|
|
||||||
|
// All the attributes are private in that case
|
||||||
|
export const RhPrivateFields = [
|
||||||
|
...rhDataFields.filter(key => !RhPublicFields.includes(key))
|
||||||
|
];
|
||||||
|
|
||||||
|
export interface RhCreated {
|
||||||
|
processId: string,
|
||||||
|
process: any, // Process
|
||||||
|
rhData: RhData,
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setDefaultRhRoles(ownerId: string, rhs: string[], salaries: string[]): Record<string, RoleDefinition> {
|
||||||
|
return {
|
||||||
|
demiurge: {
|
||||||
|
members: [ownerId],
|
||||||
|
validation_rules: [],
|
||||||
|
storages: []
|
||||||
|
},
|
||||||
|
owner: {
|
||||||
|
members: [ownerId],
|
||||||
|
validation_rules: [
|
||||||
|
{
|
||||||
|
quorum: 0.5,
|
||||||
|
fields: [...rhDataFields, 'roles'],
|
||||||
|
min_sig_member: 1,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
storages: []
|
||||||
|
},
|
||||||
|
rhs: {
|
||||||
|
members: rhs,
|
||||||
|
validation_rules: [
|
||||||
|
{
|
||||||
|
quorum: 0.5,
|
||||||
|
fields: rhDataFields,
|
||||||
|
min_sig_member: 1,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
storages: []
|
||||||
|
},
|
||||||
|
salaries: {
|
||||||
|
members: salaries,
|
||||||
|
validation_rules: [
|
||||||
|
{
|
||||||
|
quorum: 0.0,
|
||||||
|
fields: rhDataFields,
|
||||||
|
min_sig_member: 0.0,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
storages: []
|
||||||
|
},
|
||||||
|
apophis: {
|
||||||
|
members: [ownerId],
|
||||||
|
validation_rules: [],
|
||||||
|
storages: []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
Loading…
x
Reference in New Issue
Block a user