diff --git a/initFunctionData.js b/initFunctionData.js new file mode 100644 index 0000000..f44d589 --- /dev/null +++ b/initFunctionData.js @@ -0,0 +1,87 @@ +initFunctionData = async (data) => { + const { + processId, + payload, + previousData, + ref1Id, + ref2Id, + ref3Id, + ref4Id, + ref5Id, + description, + } = data; + let { unitId } = data; + // if (unitId == 14166153) + // return { statusCode: 403, message: "درحال توسعه", error: data }; + const process = + data.process || + (await bpmsDB.bpms_process.findOne({ + where: { id: processId, type: { [Op.in]: [0, 1] } }, + raw: true, + })); + if (process.networkId) { + const processNetwork = await db.network.findByPk(process.networkId, { + raw: true, + attributes: ["level"], + }); + const payloadNetwork = await db.network.findOne({ + where: { + [`level${processNetwork.level}Id`]: process.networkId, + id: payload.networkId, + }, + raw: true, + }); + } + let processChecklist = await bpmsDB.bpms_processChecklist.findAll({ + where: { processId: process.id }, + attributes: ["checklistId"], + order: [["ord", "asc"]], + }); + + const checklistIds = + data?.checklists?.length + ? data.checklists.map((item) => +item.id).filter(Boolean).join(",") + : processChecklist + .map((e) => +e.checklistId) + .filter((id) => !isNaN(id) && id !== 0) + .join(","); + + const previousTask = data.previousTask; + const network = await db.network.findByPk(payload.networkId, { + raw: true, + }); + let newData = { + workflowId: process.workflowId, + processId, + userId: payload.userId, + ..._.pick(network, [ + "level1Id", + "level2Id", + "level3Id", + "level4Id", + "level5Id", + "level6Id", + ]), + }; + + if (unitId) { + const unit = + data.unit || + (await db.unit.findOne({ + where: { id: unitId, status: 1 }, + })); + newData = { ...newData, data: [{ questionId: 100009, answer: unitId }] }; + } else { + const unitQuestion = data?.data?.find( + (r) => r.questionId == 100009 && r.answer + ); + if (unitQuestion) { + unitId = unitQuestion.answer; + const unit = + data.unit || + (await db.unit.findOne({ + where: { id: unitId, status: 1 }, + })); + } + return { data: newData, transaction: data.transaction } +}} \ No newline at end of file