99 lines
3.1 KiB
TypeScript
99 lines
3.1 KiB
TypeScript
import { v4 as uuidv4 } from 'uuid';
|
|
|
|
import MessageBus from 'src/sdk/MessageBus';
|
|
import User from 'src/sdk/User';
|
|
|
|
import { FileData } from '../../../../front/Api/Entities/types';
|
|
|
|
export default class OfficeRibService {
|
|
|
|
private static readonly messageBus: MessageBus = MessageBus.getInstance();
|
|
|
|
private constructor() { }
|
|
|
|
public static createOfficeRib(fileData: FileData, validatorId: string): Promise<any> {
|
|
const ownerId = User.getInstance().getPairingId()!;
|
|
|
|
const processData: any = {
|
|
uid: uuidv4(),
|
|
utype: 'officeRib',
|
|
isDeleted: 'false',
|
|
created_at: new Date().toISOString(),
|
|
updated_at: new Date().toISOString(),
|
|
...fileData,
|
|
};
|
|
|
|
const privateFields: string[] = Object.keys(processData);
|
|
privateFields.splice(privateFields.indexOf('uid'), 1);
|
|
privateFields.splice(privateFields.indexOf('utype'), 1);
|
|
privateFields.splice(privateFields.indexOf('isDeleted'), 1);
|
|
|
|
const roles: any = {
|
|
demiurge: {
|
|
members: [...[ownerId], validatorId],
|
|
validation_rules: [],
|
|
storages: []
|
|
},
|
|
owner: {
|
|
members: [ownerId],
|
|
validation_rules: [
|
|
{
|
|
quorum: 0.5,
|
|
fields: [...privateFields, 'roles', 'uid', 'utype'],
|
|
min_sig_member: 1,
|
|
},
|
|
],
|
|
storages: []
|
|
},
|
|
validator: {
|
|
members: [validatorId],
|
|
validation_rules: [
|
|
{
|
|
quorum: 0.5,
|
|
fields: ['idCertified', 'roles'],
|
|
min_sig_member: 1,
|
|
},
|
|
{
|
|
quorum: 0.0,
|
|
fields: [...privateFields],
|
|
min_sig_member: 0,
|
|
},
|
|
],
|
|
storages: []
|
|
},
|
|
apophis: {
|
|
members: [ownerId],
|
|
validation_rules: [],
|
|
storages: []
|
|
}
|
|
};
|
|
|
|
return new Promise<any>((resolve: (processCreated: any) => void, reject: (error: string) => void) => {
|
|
this.messageBus.createProcess(processData, privateFields, roles).then((processCreated: any) => {
|
|
this.messageBus.notifyUpdate(processCreated.processId, processCreated.process.states[0].state_id).then(() => {
|
|
this.messageBus.validateState(processCreated.processId, processCreated.process.states[0].state_id).then((_stateValidated: any) => {
|
|
resolve(processCreated);
|
|
}).catch(reject);
|
|
}).catch(reject);
|
|
}).catch(reject);
|
|
});
|
|
}
|
|
|
|
public static getOfficeRib(): Promise<any> {
|
|
return this.messageBus.getFileByUtype('officeRib');
|
|
}
|
|
|
|
public static updateOfficeRib(process: any, newData: any): Promise<void> {
|
|
return new Promise<void>((resolve: () => void, reject: (error: string) => void) => {
|
|
this.messageBus.updateProcess(process.processId, { updated_at: new Date().toISOString(), ...newData }, [], null).then((processUpdated: any) => {
|
|
const newStateId: string = processUpdated.diffs[0]?.state_id;
|
|
this.messageBus.notifyUpdate(process.processId, newStateId).then(() => {
|
|
this.messageBus.validateState(process.processId, newStateId).then((_stateValidated) => {
|
|
resolve();
|
|
}).catch(reject);
|
|
}).catch(reject);
|
|
}).catch(reject);
|
|
});
|
|
}
|
|
}
|