Add additional translations and cleanup.
Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -6,7 +6,7 @@ const logger = require("../utils/logger");
|
||||
//Need to pull the key dynamically to send documents.
|
||||
const JSR_SERVER = process.env.JSR_URL || "https://reports.imex.online";
|
||||
const jsreport = require("@jsreport/nodejs-client");
|
||||
const { QUERY_JOB_FOR_SIGNATURE, INSERT_ESIGNATURE_DOCUMENT, DISTRIBUTE_ESIGNATURE_DOCUMENT, QUERY_ESIGNATURE_BY_EXTERNAL_ID, UPDATE_ESIGNATURE_DOCUMENT, QUERY_DOCUMENSO_KEY } = require("../graphql-client/queries");
|
||||
const { QUERY_JOB_FOR_SIGNATURE, INSERT_ESIGNATURE_DOCUMENT, DISTRIBUTE_ESIGNATURE_DOCUMENT, QUERY_ESIGNATURE_BY_EXTERNAL_ID, UPDATE_ESIGNATURE_DOCUMENT, QUERY_DOCUMENSO_KEY, INSERT_ESIG_AUDIT_TRAIL } = require("../graphql-client/queries");
|
||||
const _ = require("lodash");
|
||||
|
||||
function parseJsonField(value, fallback = null) {
|
||||
@@ -122,7 +122,6 @@ async function createEsignDocumentFromPdf({ req, bodyshop, pdfBuffer, esigData,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
async function distributeDocument(req, res) {
|
||||
try {
|
||||
const client = req.userGraphQLClient;
|
||||
@@ -159,6 +158,44 @@ async function distributeDocument(req, res) {
|
||||
}
|
||||
}
|
||||
|
||||
async function redistributeDocument(req, res) {
|
||||
try {
|
||||
const client = req.userGraphQLClient;
|
||||
|
||||
const { documentId, bodyshopid } = req.body;
|
||||
const documenso = await getDocumensoClient({ bodyshopid, req })
|
||||
|
||||
|
||||
const document = await documenso.documents.get({
|
||||
documentId: parseInt(documentId)
|
||||
});
|
||||
|
||||
const distributeResult = await documenso.documents.redistribute({
|
||||
documentId: parseInt(documentId),
|
||||
recipients: document.recipients.filter(r => r.signingStatus === "NOT_SIGNED").map(r => r.id)
|
||||
});
|
||||
|
||||
await client.request(INSERT_ESIG_AUDIT_TRAIL, {
|
||||
obj: {
|
||||
jobid: req.body.jobid,
|
||||
bodyshopid: req.body.bodyshopid,
|
||||
operation: `Esignature document with title ${distributeResult.title} (ID: ${documentId}) redistributed to recipients.`,
|
||||
useremail: req.user?.email,
|
||||
type: 'esig-redistribute'
|
||||
}
|
||||
})
|
||||
|
||||
res.json({ success: true, distributeResult });
|
||||
} catch (error) {
|
||||
|
||||
logger.log(`esig-redistribute-error`, "ERROR", "esig", "api", {
|
||||
message: error.message, stack: error.stack,
|
||||
body: req.body
|
||||
});
|
||||
res.status(500).json({ error: "An error occurred while redistributing the document.", message: error.message });
|
||||
}
|
||||
}
|
||||
|
||||
async function deleteDocument(req, res) {
|
||||
try {
|
||||
const client = req.userGraphQLClient;
|
||||
@@ -413,6 +450,7 @@ module.exports = {
|
||||
newEsignDocument,
|
||||
newCustomEsignDocument,
|
||||
distributeDocument,
|
||||
redistributeDocument,
|
||||
deleteDocument,
|
||||
viewDocument,
|
||||
getDocumensoClient
|
||||
|
||||
@@ -16,6 +16,7 @@ const webhookTypeEnums = {
|
||||
DOCUMENT_CANCELLED: "DOCUMENT_CANCELLED",
|
||||
DOCUMENT_OPENED: "DOCUMENT_OPENED",
|
||||
DOCUMENT_SIGNED: "DOCUMENT_SIGNED",
|
||||
DOCUMENT_REMINDER_SENT: "DOCUMENT_REMINDER_SENT",
|
||||
}
|
||||
|
||||
async function esignWebhook(req, res) {
|
||||
@@ -29,6 +30,8 @@ async function esignWebhook(req, res) {
|
||||
const documentId = (message.payload?.id || message.payload?.payload?.id)?.toString()
|
||||
//TODO: Implement checks to prevent this from going backwards in status? If a request fails, it retries, which could cause a document marked as completed to be marked as rejected if the rejection event is processed after the completion event.
|
||||
switch (message.event) {
|
||||
case webhookTypeEnums.DOCUMENT_REMINDER_SENT:
|
||||
break;
|
||||
case webhookTypeEnums.DOCUMENT_OPENED:
|
||||
//TODO: DR: Add notification for document opened.
|
||||
await client.request(UPDATE_ESIGNATURE_DOCUMENT, {
|
||||
|
||||
@@ -4,7 +4,7 @@ const multer = require("multer");
|
||||
|
||||
const validateFirebaseIdTokenMiddleware = require("../middleware/validateFirebaseIdTokenMiddleware");
|
||||
const withUserGraphQLClientMiddleware = require("../middleware/withUserGraphQLClientMiddleware");
|
||||
const { newEsignDocument, newCustomEsignDocument, distributeDocument, viewDocument, deleteDocument } = require("../esign/esign-new");
|
||||
const { newEsignDocument, newCustomEsignDocument, distributeDocument, redistributeDocument, viewDocument, deleteDocument } = require("../esign/esign-new");
|
||||
const { esignWebhook } = require("../esign/webhook");
|
||||
|
||||
const upload = multer({
|
||||
@@ -16,6 +16,7 @@ const upload = multer({
|
||||
router.post("/new", validateFirebaseIdTokenMiddleware, withUserGraphQLClientMiddleware, newEsignDocument);
|
||||
router.post("/new-custom", validateFirebaseIdTokenMiddleware, withUserGraphQLClientMiddleware, upload.single("document"), newCustomEsignDocument);
|
||||
router.post("/distribute", validateFirebaseIdTokenMiddleware, withUserGraphQLClientMiddleware, distributeDocument);
|
||||
router.post("/redistribute", validateFirebaseIdTokenMiddleware, withUserGraphQLClientMiddleware, redistributeDocument);
|
||||
router.post("/delete", validateFirebaseIdTokenMiddleware, withUserGraphQLClientMiddleware, deleteDocument);
|
||||
router.post("/view", validateFirebaseIdTokenMiddleware, withUserGraphQLClientMiddleware, viewDocument);
|
||||
router.post("/webhook", esignWebhook);
|
||||
|
||||
Reference in New Issue
Block a user