From c115c7c7579b6a67ea0672173728fc4d3b3173fe Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Sat, 3 Feb 2024 18:51:58 +0530 Subject: [PATCH 1/4] fix: createdocument & createtemplate api not working properly --- .../v1/routes/createDocumentwithCoordinate.js | 69 ++++++++++-------- .../v1/routes/createTemplatewithCoordinate.js | 71 +++++++++++-------- 2 files changed, 82 insertions(+), 58 deletions(-) diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js index 8c1c4e68d..217ca5e2d 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js @@ -108,35 +108,48 @@ export default async function createDocumentwithCoordinate(request, response) { 'Signers', contact?.map(x => x.contactPtr) ); - let updatePlaceholders = contact.map(x => { + let updatePlaceholders = contact.map((signer, index) => { + const placeHolder = []; + + for (const widget of signer.widgets) { + const pageNumber = widget.page; + const page = placeHolder.find(page => page.pageNumber === pageNumber); + + const widgetData = { + xPosition: widget.x, + yPosition: widget.y, + isStamp: widget.type === 'stamp', + key: Math.floor(Math.random() * 10000), + isDrag: false, + firstXPos: widget.x, + firstYPos: widget.y, + yBottom: 0, + scale: 1, + isMobile: false, + zIndex: 1, + type: widget.type, + widgetValue: '', + Width: widget.w, + Height: widget.h, + }; + + if (page) { + page.pos.push(widgetData); + } else { + placeHolder.push({ + pageNumber, + pos: [widgetData], + }); + } + } + return { - signerObjId: x?.contactPtr?.objectId, - signerPtr: x?.contactPtr, - Role: x.role, - Id: randomId(), - blockColor: color[x?.index], - placeHolder: x.widgets.map((widget, i) => ({ - pageNumber: widget.page, - pos: [ - { - xPosition: widget.x, - yPosition: widget.y, - isStamp: widget.type === 'stamp' || widget.type === 'image' ? true : false, - key: randomId(), - isDrag: false, - firstXPos: widget.x, - firstYPos: widget.y, - yBottom: 0, - scale: 1, - isMobile: false, - zIndex: i + 1, - type: widget.type, - widgetValue: '', - Width: widget.w, - Height: widget.h, - }, - ], - })), + signerObjId: signer?.contactPtr?.objectId, + signerPtr: signer?.contactPtr, + Role: signer.role, + Id: 3000 + index * 1000, + blockColor: color[signer?.index], + placeHolder, }; }); object.set('Placeholders', updatePlaceholders); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js index 8e6c619e9..4c753a6d0 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js @@ -113,39 +113,50 @@ export default async function createTemplatewithCoordinate(request, response) { updatedSigners?.map(x => x.contactPtr) ); } - let updatePlaceholders = contact.map(x => { + let updatePlaceholders = contact.map((signer, index) => { + const placeHolder = []; + + for (const widget of signer.widgets) { + const pageNumber = widget.page; + const page = placeHolder.find(page => page.pageNumber === pageNumber); + + const widgetData = { + xPosition: widget.x, + yPosition: widget.y, + isStamp: widget.type === 'stamp', + key: Math.floor(Math.random() * 10000), + isDrag: false, + firstXPos: widget.x, + firstYPos: widget.y, + yBottom: 0, + scale: 1, + isMobile: false, + zIndex: 1, + type: widget.type, + widgetValue: '', + Width: widget.w, + Height: widget.h, + }; + + if (page) { + page.pos.push(widgetData); + } else { + placeHolder.push({ + pageNumber, + pos: [widgetData], + }); + } + } + return { - signerObjId: x?.contactPtr?.objectId || '', - signerPtr: x?.contactPtr || {}, - Role: x.role, - Id: randomId(), - blockColor: color[x?.index], - placeHolder: x.widgets.map((widget, i) => ({ - pageNumber: widget.page, - pos: [ - { - xPosition: widget.x, - yPosition: widget.y, - isStamp: widget.type === 'stamp' || widget.type === 'image' ? true : false, - key: randomId(), - isDrag: false, - firstXPos: widget.x, - firstYPos: widget.y, - yBottom: 0, - scale: 1, - isMobile: false, - zIndex: i + 1, - type: widget.type, - widgetValue: '', - Width: widget.w, - Height: widget.h, - }, - ], - })), + signerObjId: signer?.contactPtr?.objectId, + signerPtr: signer?.contactPtr, + Role: signer.role, + Id: 3000 + index * 1000, + blockColor: color[signer?.index], + placeHolder, }; }); - // console.log('updatePLacholders', updatePlaceholders); - object.set('Placeholders', updatePlaceholders); } if (folderId) { From f9e59905b7255a1f6eea91d01cd24572cee6f03f Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Sat, 3 Feb 2024 18:55:23 +0530 Subject: [PATCH 2/4] refactor: generate randomId in createDocument and createTemplate API --- .../customRoute/v1/routes/createDocumentwithCoordinate.js | 4 ++-- .../customRoute/v1/routes/createTemplatewithCoordinate.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js index 217ca5e2d..aa4f475f4 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js @@ -119,7 +119,7 @@ export default async function createDocumentwithCoordinate(request, response) { xPosition: widget.x, yPosition: widget.y, isStamp: widget.type === 'stamp', - key: Math.floor(Math.random() * 10000), + key: randomId(), isDrag: false, firstXPos: widget.x, firstYPos: widget.y, @@ -147,7 +147,7 @@ export default async function createDocumentwithCoordinate(request, response) { signerObjId: signer?.contactPtr?.objectId, signerPtr: signer?.contactPtr, Role: signer.role, - Id: 3000 + index * 1000, + Id: randomId(), blockColor: color[signer?.index], placeHolder, }; diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js index 4c753a6d0..4624e2ba3 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js @@ -124,7 +124,7 @@ export default async function createTemplatewithCoordinate(request, response) { xPosition: widget.x, yPosition: widget.y, isStamp: widget.type === 'stamp', - key: Math.floor(Math.random() * 10000), + key: randomId(), isDrag: false, firstXPos: widget.x, firstYPos: widget.y, @@ -152,7 +152,7 @@ export default async function createTemplatewithCoordinate(request, response) { signerObjId: signer?.contactPtr?.objectId, signerPtr: signer?.contactPtr, Role: signer.role, - Id: 3000 + index * 1000, + Id: randomId(), blockColor: color[signer?.index], placeHolder, }; From f0655893ebfa6d42f3607eb7e7f2ef303a2305b6 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Mon, 5 Feb 2024 11:23:47 +0530 Subject: [PATCH 3/4] change response of createdocument API --- .../v1/routes/createDocumentwithCoordinate.js | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js index aa4f475f4..e651a3a92 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js @@ -233,19 +233,14 @@ export default async function createDocumentwithCoordinate(request, response) { } if (sendMail.data.result.status === 'success') { - const user = contact.find(x => x.email === parseExtUser.Email); - if (user && user.email) { - return response.json({ - objectId: res.id, - url: `${baseUrl.origin}/loadmf/signmicroapp/login/${res.id}/${user.email}/${user.contactPtr.objectId}/${serverParams}`, - message: 'Document sent successfully!', - }); - } else { - return response.json({ - objectId: res.id, - message: 'Document sent successfully!', - }); - } + return response.json({ + objectId: res.id, + signurl: contact.map(x => ({ + email: x.email, + url: `${baseUrl.origin}/loadmf/signmicroapp/login/${res.id}/${x.email}/${x.contactPtr.objectId}/${serverParams}`, + })), + message: 'Document sent successfully!', + }); } } else { return response.status(400).json({ error: 'Please provide signers!' }); From 9692f57663e9ecad07a14b9ac9a05f5b8fc7adc8 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Mon, 5 Feb 2024 13:29:36 +0530 Subject: [PATCH 4/4] feat: provide widgets in create document from binary and create template from binary --- apps/OpenSignServer/cloud/customRoute/v1/apiV1.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/OpenSignServer/cloud/customRoute/v1/apiV1.js b/apps/OpenSignServer/cloud/customRoute/v1/apiV1.js index cf671c8d9..7befaec65 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/apiV1.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/apiV1.js @@ -50,10 +50,10 @@ app.delete('/contact/:contact_id', deleteContact); app.get('/contactlist', getContactList); // create Document -app.post('/createdocumentwithbinary', upload.array('file', 1), createDocument); +app.post('/createdocumentwithbinary', upload.array('file', 1), createDocumentwithCoordinate); // create Document with co-ordinate -app.post('/createdocument', upload.array('file', 1), createDocumentwithCoordinate); +app.post('/createdocument', createDocumentwithCoordinate); // create Document with base64 without placeholder app.post('/draftdocument', createDocument); @@ -74,13 +74,13 @@ app.delete('/document/:document_id', deleteDocument); app.get('/documentlist/:doctype', getDocumentList); // create Template with co-ordinate -app.post('/createtemplate', upload.array('file', 1), createTemplatewithCoordinate); +app.post('/createtemplate', createTemplatewithCoordinate); // create Template app.post('/drafttemplate', createTemplate); // create Template with binary -app.post('/createtemplatewithbinary', upload.array('file', 1), createTemplate); +app.post('/createtemplatewithbinary', upload.array('file', 1), createTemplatewithCoordinate); // get template on the basis of id app.get('/template/:template_id', getTemplate);