diff --git a/apps/OpenSign/src/pages/GuestLogin.js b/apps/OpenSign/src/pages/GuestLogin.js index 003ef60bb..ccd99aad0 100644 --- a/apps/OpenSign/src/pages/GuestLogin.js +++ b/apps/OpenSign/src/pages/GuestLogin.js @@ -19,6 +19,7 @@ function GuestLogin() { const [appLogo, setAppLogo] = useState(""); const [documentId, setDocumentId] = useState(id); const [contactId, setContactId] = useState(contactBookId); + const [sendmail, setSendmail] = useState(); useEffect(() => { handleServerUrl(); @@ -54,6 +55,7 @@ function GuestLogin() { setDocumentId(checkSplit[0]); setEmail(checkSplit[1]); setContactId(checkSplit[2]); + setSendmail(checkSplit[3]); } setIsLoading(false); @@ -146,7 +148,13 @@ function GuestLogin() { //save isGuestSigner true in local to handle login flow header in mobile view localStorage.setItem("isGuestSigner", true); setLoading(false); - navigate(`/load/recipientSignPdf/${documentId}/${contactId}`); + if (sendmail === "false") { + navigate( + `/load/recipientSignPdf/${documentId}/${contactId}?sendmail=${sendmail}` + ); + } else { + navigate(`/load/recipientSignPdf/${documentId}/${contactId}`); + } } } catch (error) { console.log("err ", error); diff --git a/apps/OpenSign/src/pages/PdfRequestFiles.js b/apps/OpenSign/src/pages/PdfRequestFiles.js index 0eda0afe1..1043d8eb5 100644 --- a/apps/OpenSign/src/pages/PdfRequestFiles.js +++ b/apps/OpenSign/src/pages/PdfRequestFiles.js @@ -39,11 +39,16 @@ import Title from "../components/Title"; import DefaultSignature from "../components/pdf/DefaultSignature"; import ModalUi from "../primitives/ModalUi"; import VerifyEmail from "../components/pdf/VerifyEmail"; +function useQuery() { + return new URLSearchParams(useLocation().search); +} function PdfRequestFiles() { const { docId } = useParams(); const navigate = useNavigate(); const location = useLocation(); + const query = useQuery(); + const sendmail = query.get("sendmail"); const [pdfDetails, setPdfDetails] = useState([]); const [signedSigners, setSignedSigners] = useState([]); const [unsignedSigners, setUnSignedSigners] = useState([]); @@ -730,7 +735,7 @@ function PdfRequestFiles() { ); const newIndex = index + 1; const user = pdfDetails?.[0].Signers[newIndex]; - if (sendInOrder) { + if (sendmail !== "false" && sendInOrder) { const requestBody = pdfDetails?.[0]?.RequestBody; const requestSubject = pdfDetails?.[0]?.RequestSubject; if (user) { diff --git a/apps/OpenSign/src/pages/PlaceHolderSign.js b/apps/OpenSign/src/pages/PlaceHolderSign.js index 07e63cc45..de91d2b92 100644 --- a/apps/OpenSign/src/pages/PlaceHolderSign.js +++ b/apps/OpenSign/src/pages/PlaceHolderSign.js @@ -998,9 +998,10 @@ function PlaceHolderSign() { for (let i = 0; i < signerMail.length; i++) { const objectId = signerMail[i].objectId; const hostUrl = window.location.origin; + const sendMail = false; //encode this url value `${pdfDetails?.[0].objectId}/${signerMail[i].Email}/${objectId}` to base64 using `btoa` function const encodeBase64 = btoa( - `${pdfDetails?.[0].objectId}/${signerMail[i].Email}/${objectId}` + `${pdfDetails?.[0].objectId}/${signerMail[i].Email}/${objectId}/${sendMail}` ); let signPdf = `${hostUrl}/login/${encodeBase64}`; shareLinkList.push({ signerEmail: signerMail[i].Email, url: signPdf }); @@ -1162,40 +1163,45 @@ function PlaceHolderSign() { } if (sendMail.data.result.status === "success") { setMailStatus("success"); - - if ( - requestBody && - requestSubject && - isCustomize && - (isSubscribe || !isEnableSubscription) - ) { - try { - const data = { + try { + let data; + if ( + requestBody && + requestSubject && + isCustomize && + (isSubscribe || !isEnableSubscription) + ) { + data = { RequestBody: htmlReqBody, - RequestSubject: requestSubject + RequestSubject: requestSubject, + SendMail: true + }; + } else { + data = { + SendMail: true }; - - await axios - .put( - `${localStorage.getItem("baseUrl")}classes/${localStorage.getItem( - "_appName" - )}_Document/${documentId}`, - data, - { - headers: { - "Content-Type": "application/json", - "X-Parse-Application-Id": localStorage.getItem("parseAppId"), - "X-Parse-Session-Token": localStorage.getItem("accesstoken") - } - } - ) - .then(() => {}) - .catch((err) => { - console.log("axois err ", err); - }); - } catch (e) { - console.log("error", e); } + + await axios + .put( + `${localStorage.getItem("baseUrl")}classes/${localStorage.getItem( + "_appName" + )}_Document/${documentId}`, + data, + { + headers: { + "Content-Type": "application/json", + "X-Parse-Application-Id": localStorage.getItem("parseAppId"), + "X-Parse-Session-Token": localStorage.getItem("accesstoken") + } + } + ) + .then(() => {}) + .catch((err) => { + console.log("axois err ", err); + }); + } catch (e) { + console.log("error", e); } setIsSend(true); diff --git a/apps/OpenSign/src/primitives/GetReportDisplay.js b/apps/OpenSign/src/primitives/GetReportDisplay.js index 21b8baf9f..cff85d595 100644 --- a/apps/OpenSign/src/primitives/GetReportDisplay.js +++ b/apps/OpenSign/src/primitives/GetReportDisplay.js @@ -308,9 +308,12 @@ const ReportTable = (props) => { const handleShare = (item) => { setActLoader({ [item.objectId]: true }); const host = window.location.origin; + const sendMail = item?.SendMail || false; const getUrl = (x) => { //encode this url value `${item.objectId}/${x.Email}/${x.objectId}` to base64 using `btoa` function - const encodeBase64 = btoa(`${item.objectId}/${x.Email}/${x.objectId}`); + const encodeBase64 = btoa( + `${item.objectId}/${x.Email}/${x.objectId}/${sendMail}` + ); return `${host}/login/${encodeBase64}`; }; diff --git a/apps/OpenSignServer/cloud/parsefunction/reportsJson.js b/apps/OpenSignServer/cloud/parsefunction/reportsJson.js index e541b5439..b94d2e82d 100644 --- a/apps/OpenSignServer/cloud/parsefunction/reportsJson.js +++ b/apps/OpenSignServer/cloud/parsefunction/reportsJson.js @@ -101,6 +101,7 @@ export default function reportJson(id, userId) { 'AuditTrail', 'AuditTrail.UserPtr', 'ExpiryDate', + 'SendMail', ], }; // completed documents report diff --git a/apps/OpenSignServer/databases/migrations/20240521184801-update_contracts_document_cls_cjs.cjs b/apps/OpenSignServer/databases/migrations/20240521184801-update_contracts_document_cls_cjs.cjs new file mode 100644 index 000000000..8575d42a2 --- /dev/null +++ b/apps/OpenSignServer/databases/migrations/20240521184801-update_contracts_document_cls_cjs.cjs @@ -0,0 +1,34 @@ +/** + * + * @param {Parse} Parse + */ +exports.up = async Parse => { + // TODO: set className here + const className = 'contracts_Document'; + const schema = new Parse.Schema(className); + schema.addBoolean('SendMail'); + schema.addBoolean('SendCompletionMail'); + // TODO: Set the schema here + // Example: + // schema.addString('name').addNumber('cash'); + + return schema.update(); +}; + +/** + * + * @param {Parse} Parse + */ +exports.down = async Parse => { + // TODO: set className here + const className = 'contracts_Document'; + const schema = new Parse.Schema(className); + schema.deleteField('SendMail'); + schema.deleteField('SendCompletionMail'); + + // TODO: Set the schema here + // Example: + // schema.deleteField('name').deleteField('cash'); + + return schema.update(); +};