85 lines
2.8 KiB
TypeScript
85 lines
2.8 KiB
TypeScript
import { Module } from "@/interfaces";
|
|
import { getApprovalWorkflowByFormIntaker, createApprovalWorkflow } from "@/utils/approval.workflows.be";
|
|
import client from "@/lib/mongodb";
|
|
|
|
const db = client.db(process.env.MONGODB_DB);
|
|
|
|
/* export async function createApprovalWorkflowsOnExamCreation(examAuthor: string, examEntities: string[], examId: string, examModule: string) {
|
|
const results = await Promise.all(
|
|
examEntities.map(async (entity) => {
|
|
const configuredWorkflow = await getApprovalWorkflowByFormIntaker(entity, examAuthor);
|
|
if (!configuredWorkflow) {
|
|
return { entity, created: false };
|
|
}
|
|
|
|
configuredWorkflow.modules.push(examModule as Module);
|
|
configuredWorkflow.name = examId;
|
|
configuredWorkflow.examId = examId;
|
|
configuredWorkflow.entityId = entity;
|
|
configuredWorkflow.startDate = Date.now();
|
|
|
|
try {
|
|
await createApprovalWorkflow("active-workflows", configuredWorkflow);
|
|
return { entity, created: true };
|
|
} catch (error: any) {
|
|
return { entity, created: false };
|
|
}
|
|
})
|
|
);
|
|
|
|
const successCount = results.filter((r) => r.created).length;
|
|
const totalCount = examEntities.length;
|
|
|
|
return {
|
|
successCount,
|
|
totalCount,
|
|
};
|
|
} */
|
|
|
|
// TEMPORARY BEHAVIOUR! ONLY THE FIRST CONFIGURED WORKFLOW FOUND IS STARTED
|
|
export async function createApprovalWorkflowOnExamCreation(examAuthor: string, examEntities: string[], examId: string, examModule: string) {
|
|
let successCount = 0;
|
|
let totalCount = 0;
|
|
|
|
for (const entity of examEntities) {
|
|
const configuredWorkflow = await getApprovalWorkflowByFormIntaker(entity, examAuthor);
|
|
|
|
if (!configuredWorkflow) {
|
|
continue;
|
|
}
|
|
|
|
totalCount = 1; // a workflow was found
|
|
|
|
configuredWorkflow.modules.push(examModule as Module);
|
|
configuredWorkflow.name = examId;
|
|
configuredWorkflow.examId = examId;
|
|
configuredWorkflow.entityId = entity;
|
|
configuredWorkflow.startDate = Date.now();
|
|
configuredWorkflow.steps[0].completed = true;
|
|
configuredWorkflow.steps[0].completedBy = examAuthor;
|
|
configuredWorkflow.steps[0].completedDate = Date.now();
|
|
|
|
try {
|
|
await createApprovalWorkflow("active-workflows", configuredWorkflow);
|
|
successCount = 1;
|
|
break; // Stop after the first success
|
|
} catch (error: any) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
// prettier-ignore
|
|
if (totalCount === 0) { // current behaviour: if no workflow was found skip approval process
|
|
await db.collection(examModule).updateOne(
|
|
{ id: examId },
|
|
{ $set: { id: examId, isDiagnostic: false }},
|
|
{ upsert: true }
|
|
);
|
|
}
|
|
|
|
return {
|
|
successCount,
|
|
totalCount,
|
|
};
|
|
}
|