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
@@ -7,6 +7,8 @@ export default async function createDocumentWithTemplate(request, response) {
const templateId = request.params.template_id;
const protocol = customAPIurl();
const baseUrl = new URL(process.env.SERVER_URL);
const send_email = request.body.send_email || true;
try {
const reqToken = request.headers['x-api-token'];
if (!reqToken) {
@@ -48,6 +50,8 @@ export default async function createDocumentWithTemplate(request, response) {
if (template?.Description) {
object.set('Description', template.Description);
}
object.set('IsSendMail', send_email);
let templateSigner = template?.Signers ? template?.Signers : [];
let contact = [];
if (signers && signers.length > 0) {
@@ -9,6 +9,7 @@ export default async function createDocument(request, response) {
const signers = request.body.signers;
const folderId = request.body.folderId;
const base64File = request.body.file;
const send_email = request.body.send_email || true;
const fileData = request.files?.[0] ? request.files[0].buffer : null;
// console.log('fileData ', fileData);
const protocol = customAPIurl();
@@ -65,6 +66,7 @@ export default async function createDocument(request, response) {
object.set('URL', fileUrl);
object.set('CreatedBy', userPtr);
object.set('ExtUserPtr', extUserPtr);
object.set('IsSendMail', send_email);
if (signers && signers.length > 0) {
let parseSigners;
if (base64File) {
@@ -1,11 +1,56 @@
import axios from 'axios';
import { color, customAPIurl } from '../../../../Utils.js';
// `sendDoctoWebhook` is used to send res data of document on webhook
async function sendDoctoWebhook(doc, WebhookUrl, userId) {
if (WebhookUrl) {
const params = {
event: 'created',
...doc,
};
await axios
.post(WebhookUrl, params, {
headers: { 'Content-Type': 'application/json' },
})
.then(res => {
try {
// console.log('res ', res);
const webhook = new Parse.Object('contracts_Webhook');
webhook.set('Log', res?.status);
webhook.set('UserId', {
__type: 'Pointer',
className: '_User',
objectId: userId,
});
webhook.save(null, { useMasterKey: true });
} catch (err) {
console.log('err save in contracts_Webhook', err);
}
})
.catch(err => {
console.log('Err send data to webhook', err);
try {
const webhook = new Parse.Object('contracts_Webhook');
webhook.set('Log', err?.status);
webhook.set('UserId', {
__type: 'Pointer',
className: '_User',
objectId: userId,
});
webhook.save(null, { useMasterKey: true });
} catch (err) {
console.log('err save in contracts_Webhook', err);
}
});
// console.log('res ', res.data);
}
}
const randomId = () => Math.floor(1000 + Math.random() * 9000);
export default async function createDocumentwithCoordinate(request, response) {
const name = request.body.title;
const note = request.body.note;
const description = request.body.description;
const send_email = request.body.send_email || true;
const signers = request.body.signers;
const folderId = request.body.folderId;
const base64File = request.body.file;
@@ -63,6 +108,7 @@ export default async function createDocumentwithCoordinate(request, response) {
object.set('URL', fileUrl);
object.set('CreatedBy', userPtr);
object.set('ExtUserPtr', extUserPtr);
object.set('IsSendMail', send_email);
let contact = [];
if (signers && signers.length > 0) {
let parseSigners;
@@ -168,7 +214,18 @@ export default async function createDocumentwithCoordinate(request, response) {
newACL.setWriteAccess(userPtr.id, true);
object.setACL(newACL);
const res = await object.save(null, { useMasterKey: true });
const doc = {
objectId: res.id,
file: fileUrl,
name: name,
note: note || '',
description: description || '',
signers: contact?.map(x => ({ name: x.name, email: x.email, phone: x.phone })),
createdAt: res.createdAt,
};
if (parseExtUser && parseExtUser.Webhook) {
sendDoctoWebhook(doc, parseExtUser?.Webhook, userPtr?.id);
}
const newDate = new Date();
newDate.setDate(newDate.getDate() + 15);
const localExpireDate = newDate.toLocaleDateString('en-US', {