From 4f2801d901519f87c3170ae6847494f8a01f4efb Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Thu, 15 Feb 2024 11:06:27 +0530 Subject: [PATCH 1/3] =?UTF-8?q?refactor:=20change=20keyword=20in=20mail=20?= =?UTF-8?q?from=20opensign=20to=20OpenSign=E2=84=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloud/parsefunction/pdf/PDF.min.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/OpenSignServer/cloud/parsefunction/pdf/PDF.min.js b/apps/OpenSignServer/cloud/parsefunction/pdf/PDF.min.js index bebaa36ce..0c588349f 100644 --- a/apps/OpenSignServer/cloud/parsefunction/pdf/PDF.min.js +++ b/apps/OpenSignServer/cloud/parsefunction/pdf/PDF.min.js @@ -55,9 +55,9 @@ async function sendMail(e) { html: "

Document Copy

A copy of the document " + s + - ' Standard is attached to this email. Kindly download the document from the attachment.

This is an automated email from Open Sign. For any queries regarding this email, please contact the sender ' + + ' Standard is attached to this email. Kindly download the document from the attachment.

This is an automated email from OpenSign™. For any queries regarding this email, please contact the sender ' + t.Mail + - ' directly. If you think this email is inappropriate or spam, you may file a complaint with Open Sign here.

', + ' directly. If you think this email is inappropriate or spam, you may file a complaint with OpenSign™ here.

', }; await axios.post(serverUrl + '/functions/sendmailv3', a, { headers: { @@ -80,9 +80,9 @@ async function sendCompletedMail(e) { html: "

Document sign successfully

All parties have successfully signed the document" + s + - '. Kindly download the document from the attachment.

This is an automated email from Open Sign. For any queries regarding this email, please contact the sender ' + + '. Kindly download the document from the attachment.

This is an automated email from OpenSign™. For any queries regarding this email, please contact the sender ' + t.Mail + - ' directly. If you think this email is inappropriate or spam, you may file a complaint with Open Sign here.

', + ' directly. If you think this email is inappropriate or spam, you may file a complaint with OpenSign™ here.

', }; await axios.post(serverUrl + '/functions/sendmailv3', a, { headers: { @@ -238,13 +238,13 @@ async function PDF(i, n) { v && 0 < v.length ? plainAddPlaceholder({ pdfBuffer: e, - reason: 'Digitally signed by Open sign for ' + v?.join(', '), + reason: 'Digitally signed by OpenSign™ for ' + v?.join(', '), location: 'location', signatureLength: 1e4, }) : plainAddPlaceholder({ pdfBuffer: e, - reason: 'Digitally signed by Open sign for ' + m + ' <' + g + '>', + reason: 'Digitally signed by OpenSign™ for ' + m + ' <' + g + '>', location: 'location', signatureLength: 1e4, })), From 68050e3a35b579eb1a99ba3ac534892a8187a6d1 Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Thu, 15 Feb 2024 15:43:32 +0530 Subject: [PATCH 2/3] feat: add Send in order to send mail sequentially for signing document --- apps/OpenSign/src/routes/Form.js | 31 +- .../v1/routes/CreateDocumentWithTemplate.js | 8 + .../v1/routes/createDocumentwithCoordinate.js | 7 + .../cloud/parsefunction/pdf/PDF.min.js | 4 +- .../src/Component/PdfRequestFiles.js | 425 +++++++++++------- .../src/Component/placeHolderSign.js | 6 +- 6 files changed, 323 insertions(+), 158 deletions(-) diff --git a/apps/OpenSign/src/routes/Form.js b/apps/OpenSign/src/routes/Form.js index 1069753e6..032454901 100644 --- a/apps/OpenSign/src/routes/Form.js +++ b/apps/OpenSign/src/routes/Form.js @@ -34,7 +34,8 @@ const Forms = (props) => { Name: "", Description: "", Note: "Please review and sign this document", - TimeToCompleteDays: 15 + TimeToCompleteDays: 15, + SendinOrder: "false" }); const [fileupload, setFileUpload] = useState([]); const [fileload, setfileload] = useState(false); @@ -161,6 +162,8 @@ const Forms = (props) => { "TimeToCompleteDays", parseInt(formData?.TimeToCompleteDays) ); + const isChecked = formData.SendinOrder === "true" ? true : false; + object.set("SendinOrder", isChecked); } object.set("URL", fileupload); object.set("CreatedBy", Parse.User.createWithoutData(currentUser.id)); @@ -365,6 +368,32 @@ const Forms = (props) => { /> )} + {props.title === "Request Signature" && ( +
+ +
+ +
Yes
+
+
+ +
No
+
+
+ )}

This is an automated email from OpenSign™. For any queries regarding this email, please contact the sender " + + sender + + " directly.If you think this email is inappropriate or spam, you may file a complaint with OpenSign™ here.

" + }; + sendMail = await axios.post(url, params, { + headers: headers + }); + } catch (error) { + console.log("error", error); + } + } + } + } else { + setIsAlert({ + isShow: true, + alertMessage: "something went wrong" + }); + } + } catch (err) { setIsAlert({ isShow: true, alertMessage: "something went wrong" }); } - } catch (err) { - setIsAlert({ - isShow: true, - alertMessage: "something went wrong" - }); } - } - setIsSignPad(false); - // } + setIsSignPad(false); + // } + } else { + setIsAlert({ + isShow: true, + alertMessage: "something went wrong" + }); + } } else { setIsAlert({ isShow: true, - alertMessage: "something went wrong" + alertMessage: + "Please wait for your turn to sign this document, as it has been set up by the creator to be signed in a specific order; you'll be notified when it's your turn." }); } } diff --git a/microfrontends/SignDocuments/src/Component/placeHolderSign.js b/microfrontends/SignDocuments/src/Component/placeHolderSign.js index 5dd79e66b..ec16c84ae 100644 --- a/microfrontends/SignDocuments/src/Component/placeHolderSign.js +++ b/microfrontends/SignDocuments/src/Component/placeHolderSign.js @@ -661,8 +661,11 @@ function PlaceHolderSign() { year: "numeric" }); let sender = pdfDetails?.[0].ExtUserPtr.Email; - const signerMail = signersdata; + let signerMail = signersdata.slice(); + if (pdfDetails?.[0]?.SendinOrder && pdfDetails?.[0]?.SendinOrder === true) { + signerMail.splice(1); + } for (let i = 0; i < signerMail.length; i++) { try { const imgPng = @@ -691,7 +694,6 @@ function PlaceHolderSign() { recipient: signerMail[i].Email, subject: `${pdfDetails?.[0].ExtUserPtr.Name} has requested you to sign ${pdfDetails?.[0].Name}`, from: sender, - html: "
diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js index 1c4b9803f..ebb0dbbe6 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js @@ -105,8 +105,9 @@ export default async function createDocumentWithTemplate(request, response) { object.set('IsSendMail', send_email); if (sendInOrder) { object.set('SendinOrder', sendInOrder); + } else if (template?.SendinOrder && template?.SendinOrder) { + object.set('SendinOrder', template?.SendinOrder); } - let templateSigner = template?.Signers ? template?.Signers : []; let contact = []; if (signers && signers.length > 0) { diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js index a57c20e58..bd9aced27 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js @@ -11,6 +11,7 @@ export default async function createDocument(request, response) { const base64File = request.body.file; const send_email = request.body.send_email || true; const fileData = request.files?.[0] ? request.files[0].buffer : null; + const SendinOrder = request.body.sendInOrder || false; // console.log('fileData ', fileData); const protocol = customAPIurl(); @@ -69,6 +70,9 @@ export default async function createDocument(request, response) { if (description) { object.set('Description', description); } + if (SendinOrder) { + object.set('SendinOrder', SendinOrder); + } object.set('URL', fileUrl); object.set('CreatedBy', userPtr); object.set('ExtUserPtr', extUserPtr); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js index 1e835958a..a2b22d90f 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js @@ -8,6 +8,7 @@ export default async function createTemplate(request, response) { const signers = request.body?.signers; const folderId = request.body?.folderId; const base64File = request.body.file; + const SendinOrder = request.body.sendInOrder || false; const fileData = request.files?.[0] ? request.files[0].buffer : null; const baseUrl = new URL(process.env.SERVER_URL); @@ -61,6 +62,9 @@ export default async function createTemplate(request, response) { object.set('URL', fileUrl); object.set('CreatedBy', userPtr); object.set('ExtUserPtr', extUserPtr); + if (SendinOrder) { + object.set('SendinOrder', SendinOrder); + } if (signers && signers.length > 0) { let parseSigners; if (base64File) { diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js index 40f0a170c..62cab68da 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplatewithCoordinate.js @@ -10,6 +10,7 @@ export default async function createTemplatewithCoordinate(request, response) { const folderId = request.body.folderId; const base64File = request.body.file; const fileData = request.files?.[0] ? request.files[0].buffer : null; + const SendinOrder = request.body.sendInOrder || false; // console.log('fileData ', fileData); const protocol = customAPIurl(); @@ -63,6 +64,9 @@ export default async function createTemplatewithCoordinate(request, response) { if (description) { object.set('Description', description); } + if (SendinOrder) { + object.set('SendinOrder', SendinOrder); + } object.set('URL', fileUrl); object.set('CreatedBy', userPtr); object.set('ExtUserPtr', extUserPtr); diff --git a/microfrontends/SignDocuments/src/Component/TemplatePlaceholder.js b/microfrontends/SignDocuments/src/Component/TemplatePlaceholder.js index a8c34524d..ed8c54812 100644 --- a/microfrontends/SignDocuments/src/Component/TemplatePlaceholder.js +++ b/microfrontends/SignDocuments/src/Component/TemplatePlaceholder.js @@ -668,7 +668,8 @@ const TemplatePlaceholder = () => { Signers: signers, Name: pdfDetails[0]?.Name || "", Note: pdfDetails[0]?.Note || "", - Description: pdfDetails[0]?.Description || "" + Description: pdfDetails[0]?.Description || "", + SendinOrder: pdfDetails[0]?.SendinOrder || false }; await axios diff --git a/microfrontends/SignDocuments/src/Component/component/EditTemplate.js b/microfrontends/SignDocuments/src/Component/component/EditTemplate.js index f60091c6d..9290069ad 100644 --- a/microfrontends/SignDocuments/src/Component/component/EditTemplate.js +++ b/microfrontends/SignDocuments/src/Component/component/EditTemplate.js @@ -7,7 +7,8 @@ const EditTemplate = ({ template, onSuccess }) => { const [formData, setFormData] = useState({ Name: template?.Name || "", Note: template?.Note || "", - Description: template?.Description || "" + Description: template?.Description || "", + SendinOrder: template?.SendinOrder ? `${template?.SendinOrder}` : "false" }); const handleStrInput = (e) => { @@ -22,7 +23,8 @@ const EditTemplate = ({ template, onSuccess }) => { const handleSubmit = async (e) => { e.preventDefault(); e.stopPropagation(); - const data = {...formData } + const isChecked = formData.SendinOrder === "true" ? true : false; + const data = { ...formData, SendinOrder: isChecked }; onSuccess(data); }; @@ -86,6 +88,45 @@ const EditTemplate = ({ template, onSuccess }) => { className="addUserInput" />
+
+ +
+ +
Yes
+
+
+ +
No
+
+
{/* */}