Compare commits

..

No commits in common. "085713400c6566cdf505cdc936e940d51d86591d" and "1cf45b83ae0d266e53d9b8efe435dc7d6b51aa89" have entirely different histories.

2 changed files with 2279 additions and 307 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,19 @@
import { isFileBlob, type FileBlob } from "./Data";
import type { RoleDefinition } from "./Roles";
export interface FolderData {
folderNumber: string;
name: string;
deedType: string;
description: string;
archived_description: string;
status: string;
created_at: string;
updated_at: string;
customers: string[];
documents: FileBlob[];
notes: string[];
stakeholders: string[];
}
export function isFolderData(data: any): data is FolderData {
@ -15,7 +22,10 @@ export function isFolderData(data: any): data is FolderData {
const requiredStringFields = [
'folderNumber',
'name',
'deedType',
'description',
'archived_description',
'status',
'created_at',
'updated_at'
];
@ -24,10 +34,26 @@ export function isFolderData(data: any): data is FolderData {
if (typeof data[field] !== 'string') return false;
}
// Vérifier que notes est un tableau de chaînes
if (!Array.isArray(data.notes) || !data.notes.every((item: any) => typeof item === 'string')) {
const requiredArrayFields = [
'customers',
'notes',
'stakeholders'
];
for (const field of requiredArrayFields) {
if (!Array.isArray(data[field]) || !data[field].every((item: any) => typeof item === 'string')) {
return false;
}
}
const requiredFileBlobArrayFields = [
'documents',
];
for (const field of requiredFileBlobArrayFields) {
if (!Array.isArray(data[field])) return false;
if (data[field].length > 0 && !data[field].every(isFileBlob)) return false;
}
return true;
}
@ -35,10 +61,16 @@ export function isFolderData(data: any): data is FolderData {
const emptyFolderData: FolderData = {
folderNumber: '',
name: '',
deedType: '',
description: '',
archived_description: '',
status: '',
created_at: '',
updated_at: '',
notes: []
customers: [],
documents: [],
notes: [],
stakeholders: []
};
const folderDataFields: string[] = Object.keys(emptyFolderData);
@ -56,7 +88,7 @@ export interface FolderCreated {
data: FolderData,
}
export function setDefaultFolderRoles(ownerId: string): Record<string, RoleDefinition> {
export function setDefaultFolderRoles(ownerId: string, stakeholdersId: string[], customersId: string[]): Record<string, RoleDefinition> {
return {
demiurge: {
members: [ownerId],
@ -74,6 +106,28 @@ export function setDefaultFolderRoles(ownerId: string): Record<string, RoleDefin
],
storages: []
},
stakeholders: {
members: stakeholdersId,
validation_rules: [
{
quorum: 0.5,
fields: ['documents', 'notes'],
min_sig_member: 1,
},
],
storages: []
},
customers: {
members: customersId,
validation_rules: [
{
quorum: 0.0,
fields: folderDataFields,
min_sig_member: 0.0,
},
],
storages: []
},
apophis: {
members: [ownerId],
validation_rules: [],