feat:add declined, created event which is send document on webhook

This commit is contained in:
prafull-opensignlabs
2024-02-07 22:01:32 +05:30
parent 1a774bfcfa
commit eb01a0b17d
7 changed files with 211 additions and 48 deletions
+50 -46
View File
@@ -15,20 +15,20 @@ async function uploadFile(e, a) {
console.log('Err ', e), fs.unlinkSync(a);
}
}
async function updateDoc(t, s, r, i, o, n) {
async function updateDoc(t, s, r, i, n, o) {
try {
var d = {
UserPtr: { __type: 'Pointer', className: n, objectId: r },
UserPtr: { __type: 'Pointer', className: o, objectId: r },
SignedUrl: s,
Activity: 'Signed',
ipAddress: i,
};
let e;
var l = (e = o.AuditTrail && 0 < o.AuditTrail.length ? [...o.AuditTrail, d] : [d]).filter(
var l = (e = n.AuditTrail && 0 < n.AuditTrail.length ? [...n.AuditTrail, d] : [d]).filter(
e => 'Signed' === e.Activity
);
let a = !1;
!((o.Signers && 0 < o.Signers.length && l.length !== o.Signers.length) || !(a = !0));
!((n.Signers && 0 < n.Signers.length && l.length !== n.Signers.length) || !(a = !0));
var c = { SignedUrl: s, AuditTrail: e, IsCompleted: a };
await axios.put(serverUrl + '/classes/contracts_Document/' + t, c, {
headers: {
@@ -95,27 +95,28 @@ async function sendCompletedMail(e) {
async function sendDoctoWebhook(t, e, a, s) {
let r = [];
(r = s
? { Name: s?.Name, Email: s?.Email, Phone: s?.Phone }
: t?.data?.Signers?.map(e => ({ Name: e.Name, Email: e.Email, Phone: e.Phone })) || [
? { name: s?.Name, email: s?.Email, phone: s?.Phone }
: t?.data?.Signers?.map(e => ({ name: e.Name, email: e.Email, phone: e.Phone })) || [
{
Name: t?.data?.ExtUserPtr?.Name,
Email: t?.data?.ExtUserPtr?.Email,
Phone: t?.data?.ExtUserPtr?.Phone,
name: t?.data?.ExtUserPtr?.Name,
email: t?.data?.ExtUserPtr?.Email,
phone: t?.data?.ExtUserPtr?.Phone,
},
]),
t.data.ExtUserPtr?.Webhook &&
((s =
'Signed' === a
? { Signer: r, SignedAt: new Date() }
: { Signers: r, CompletedAt: new Date() }),
'signed' === a
? { signer: r, signedAt: new Date() }
: { signers: r, completedAt: new Date() }),
(a = {
Event: a,
File: e || '',
Name: t?.data?.Name,
Note: t?.data?.Note || '',
Description: t?.data?.Description || '',
event: a,
objectId: t?.data?.objectId,
file: e || '',
name: t?.data?.Name,
note: t?.data?.Note || '',
description: t?.data?.Description || '',
...s,
CreatedAt: t?.data?.createdAt,
createdAt: t?.data?.createdAt,
}),
await axios
.post(t?.data?.ExtUserPtr?.Webhook, a, { headers: { 'Content-Type': 'application/json' } })
@@ -149,12 +150,12 @@ async function sendDoctoWebhook(t, e, a, s) {
}
}));
}
async function PDF(i, o) {
async function PDF(i, n) {
try {
i.params.sign;
var e = i.params.docId,
a = i.params.userId,
n = await axios.get(
o = await axios.get(
serverUrl + '/classes/contracts_Document/' + e + '?include=ExtUserPtr,Signers',
{
headers: {
@@ -218,26 +219,26 @@ async function PDF(i, o) {
};
let a;
var y = (a =
n.data.AuditTrail && 0 < n.data.AuditTrail.length
? [...n.data.AuditTrail, f]
o.data.AuditTrail && 0 < o.data.AuditTrail.length
? [...o.data.AuditTrail, f]
: [f]).filter(e => 'Signed' === e.Activity);
let t = !1;
!(
(n.data.Signers && 0 < n.data.Signers.length && y.length !== n.data.Signers.length) ||
(o.data.Signers && 0 < o.data.Signers.length && y.length !== o.data.Signers.length) ||
!(t = !0)
);
var P,
v,
var v,
P,
b = `exported_file_${Math.floor(5e3 * Math.random())}.pdf`,
x = './exports/' + b,
U =
(t
? ((P = n.data.Signers?.map(e => e.Name + ' <' + e.Email + '>')),
? ((v = o.data.Signers?.map(e => e.Name + ' <' + e.Email + '>')),
(e =
P && 0 < P.length
v && 0 < v.length
? plainAddPlaceholder({
pdfBuffer: e,
reason: 'Digitally signed by Open sign for ' + P?.join(', '),
reason: 'Digitally signed by Open sign for ' + v?.join(', '),
location: 'location',
signatureLength: 1e4,
})
@@ -247,39 +248,42 @@ async function PDF(i, o) {
location: 'location',
signatureLength: 1e4,
})),
(v = await new SignPDF(e, u).signPDF()),
fs.writeFileSync(x, v))
(P = await new SignPDF(e, u).signPDF()),
fs.writeFileSync(x, P))
: fs.writeFileSync(x, e),
await uploadFile(b, x));
if (U && U.imageUrl) {
const o = await updateDoc(
const n = await updateDoc(
i.params.docId,
U.imageUrl,
s.data.results[0].objectId,
i.headers['x-real-ip'],
n.data,
o.data,
r
);
return (
sendMail({
var I,
w = {
url: U.imageUrl,
sender: { Mail: n.data.ExtUserPtr.Email, Name: n.data.ExtUserPtr.Name },
pdfName: n.data.Name,
sender: { Mail: o.data.ExtUserPtr.Email, Name: o.data.ExtUserPtr.Name },
pdfName: o.data.Name,
receiver: g,
}),
sendDoctoWebhook(n, U.imageUrl, 'Signed', s?.data.results?.[0]),
o &&
o.isCompleted &&
(sendCompletedMail({
};
return (
o.data.IsSendMail && sendMail(w),
sendDoctoWebhook(o, U.imageUrl, 'signed', s?.data.results?.[0]),
n &&
n.isCompleted &&
((I = {
url: U.imageUrl,
sender: { Mail: n.data.ExtUserPtr.Email, Name: 'OpenSign™' },
pdfName: n.data.Name,
receiver: n.data.ExtUserPtr.Email,
sender: { Mail: o.data.ExtUserPtr.Email, Name: 'OpenSign™' },
pdfName: o.data.Name,
receiver: o.data.ExtUserPtr.Email,
}),
sendDoctoWebhook(n, U.imageUrl, 'Completed')),
o.data.IsSendMail && sendCompletedMail(I),
sendDoctoWebhook(o, U.imageUrl, 'completed')),
fs.unlinkSync(x),
console.log('New Signed PDF created called: ' + x),
'success' === o.message
'success' === n.message
? { status: 'success', data: U.imageUrl }
: { status: 'error', message: 'please provide required parameters!' }
);