Skip to content

Commit 7e4f12e

Browse files
feat: bulk send is working for exist contact
1 parent ffc8e4b commit 7e4f12e

File tree

3 files changed

+89
-45
lines changed

3 files changed

+89
-45
lines changed

apps/OpenSign/src/components/BulkSendUi.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ const BulkSendUi = (props) => {
118118
// Push a new document object with updated Placeholders into the Documents array
119119
Documents.push({ ...props.item, Placeholders: updatedPlaceholders });
120120
});
121-
console.log("Documents ", Documents);
122-
// await batchQuery(Documents);
121+
// console.log("Documents ", Documents);
122+
await batchQuery(Documents);
123123
};
124124

125125
const batchQuery = async (Documents) => {

apps/OpenSign/src/primitives/GetReportDisplay.js

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -632,11 +632,27 @@ const ReportTable = (props) => {
632632
}
633633
};
634634

635-
const handleBulkSend = (template) => {
636-
if (template?.Placeholders?.length > 0) {
637-
setPlaceholders(template?.Placeholders);
638-
setTemplateDetails(template);
639-
setIsBulkSend({ [template.objectId]: true });
635+
const handleBulkSend = async (template) => {
636+
const params = {
637+
templateId: template.objectId,
638+
include: ["Placeholders.signerPtr"]
639+
};
640+
const axiosRes = await axios.post(
641+
`${localStorage.getItem("baseUrl")}functions/getTemplate`,
642+
params,
643+
{
644+
headers: {
645+
"Content-Type": "application/json",
646+
"X-Parse-Application-Id": localStorage.getItem("parseAppId"),
647+
sessionToken: localStorage.getItem("accesstoken")
648+
}
649+
}
650+
);
651+
const templateRes = axiosRes.data && axiosRes.data.result;
652+
if (templateRes?.Placeholders?.length > 0) {
653+
setPlaceholders(templateRes?.Placeholders);
654+
setTemplateDetails(templateRes);
655+
setIsBulkSend({ [templateRes.objectId]: true });
640656
} else {
641657
setIsDocErr(true);
642658
}

apps/OpenSignServer/cloud/parsefunction/createBatchDocs.js

Lines changed: 66 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ async function sendMail(document, sessionToken) {
3333
if (objectId) {
3434
encodeBase64 = btoa(`${document.objectId}}/${signerMail[i].signerPtr.Email}/${objectId}`);
3535
} else {
36-
encodeBase64 = btoa(`${document.objectId}}/${signerMail[i].email}/${objectId}`);
36+
encodeBase64 = btoa(`${document.objectId}}/${signerMail[i].email}`);
3737
}
3838
let signPdf = `${hostUrl}/login/${encodeBase64}`;
3939
const openSignUrl = 'https://www.opensignlabs.com/';
@@ -80,7 +80,7 @@ export default async function createBatchDocs(request) {
8080
const strDocuments = request.params.Documents;
8181
const sessionToken = request.headers['sessiontoken'];
8282
const Documents = JSON.parse(strDocuments);
83-
83+
const Ip = request?.headers?.['x-real-ip'] || '';
8484
// console.log('Documents ', Documents);
8585
const parseConfig = {
8686
baseURL: serverUrl, //localStorage.getItem('baseUrl'),
@@ -91,51 +91,79 @@ export default async function createBatchDocs(request) {
9191
},
9292
};
9393
try {
94-
const requests = Documents.map(x => ({
95-
method: 'POST',
96-
path: '/app/classes/contracts_Document',
97-
body: {
98-
Name: x.Name,
99-
URL: x.URL,
100-
Note: x.Note,
101-
Description: x.Description,
102-
CreatedBy: x.CreatedBy,
103-
ExtUserPtr: {
104-
__type: 'Pointer',
105-
className: x.ExtUserPtr.className,
106-
objectId: x.ExtUserPtr.objectId,
94+
const requests = Documents.map(x => {
95+
const Signers = x.Signers;
96+
const allSigner = x?.Placeholders?.map(item => {
97+
const signer = Signers?.find(e => item?.signerPtr?.objectId === e?.objectId);
98+
if (signer) {
99+
return signer;
100+
} else {
101+
return item?.signerPtr?.objectId && item?.signerPtr;
102+
}
103+
});
104+
const date = new Date();
105+
const isoDate = date.toISOString();
106+
let Acl = { [x.CreatedBy.objectId]: { read: true, write: true } };
107+
// console.log('allSigner ', allSigner);
108+
if (allSigner && allSigner.length > 0) {
109+
allSigner.forEach(x => {
110+
const obj = { [x.CreatedBy.objectId]: { read: true, write: true } };
111+
Acl = { ...Acl, ...obj };
112+
});
113+
}
114+
return {
115+
method: 'POST',
116+
path: '/app/classes/contracts_Document',
117+
body: {
118+
Name: x.Name,
119+
URL: x.URL,
120+
Note: x.Note,
121+
Description: x.Description,
122+
CreatedBy: x.CreatedBy,
123+
SendinOrder: x.SendinOrder || true,
124+
ExtUserPtr: {
125+
__type: 'Pointer',
126+
className: x.ExtUserPtr.className,
127+
objectId: x.ExtUserPtr.objectId,
128+
},
129+
Placeholders: x.Placeholders.map(y =>
130+
y?.signerPtr?.objectId
131+
? {
132+
...y,
133+
signerPtr: {
134+
__type: 'Pointer',
135+
className: 'contracts_Contactbook',
136+
objectId: y.signerPtr.objectId,
137+
},
138+
signerObjId: y.signerObjId,
139+
}
140+
: { ...y, signerPtr: {}, signerObjId: '' }
141+
),
142+
SignedUrl: x.URL || x.SignedUrl,
143+
Signers: allSigner?.map(y => ({
144+
__type: 'Pointer',
145+
className: 'contracts_Contactbook',
146+
objectId: y.objectId,
147+
})),
148+
ACL: Acl,
149+
RemindOnceInEvery: x.RemindOnceInEvery,
150+
AutomaticReminders: x.AutomaticReminders || false,
151+
TimeToCompleteDays: x.TimeToCompleteDays || 15,
152+
OriginIp: Ip,
153+
DocSentAt: { __type: 'Date', iso: isoDate },
107154
},
108-
Placeholders: x.Placeholders.map(y =>
109-
y?.signerPtr?.objectId
110-
? {
111-
...y,
112-
signerPtr: {
113-
__type: 'Pointer',
114-
className: y.signerPtr.className,
115-
objectId: y.signerPtr.objectId,
116-
},
117-
signerObjId: y.signerObjId,
118-
}
119-
: { ...y, signerPtr: {}, signerObjId: '' }
120-
),
121-
SignedUrl: x.SignedUrl,
122-
Signers: x.Signers.map(y => ({
123-
__type: 'Pointer',
124-
className: y.className,
125-
objectId: y.objectId,
126-
})),
127-
},
128-
}));
155+
};
156+
});
129157
// console.log('requests ', requests);
130158

131159
const response = await axios.post('batch', { requests: requests }, parseConfig);
132160
// // Handle the batch query response
133-
// console.log('Batch query response:', response.data)
161+
// console.log('Batch query response:', response.data);
134162
if (response.data && response.data.length > 0) {
135163
const updateDocuments = Documents.map((x, i) => ({
136164
...x,
137165
objectId: response.data[i]?.success?.objectId,
138-
createdAt: response.data[i]?.success.createdAt,
166+
createdAt: response.data[i]?.success?.createdAt,
139167
}));
140168
for (let i = 0; i < updateDocuments.length; i++) {
141169
// console.log('updateDocuments ', updateDocuments);

0 commit comments

Comments
 (0)