From 6034e7a21ee17413bca91889a03b8981207156a3 Mon Sep 17 00:00:00 2001 From: Ephraim Atta-Duncan Date: Sun, 9 Apr 2023 13:15:44 +0000 Subject: [PATCH] Send email notification to signers on document signing completion with signed document --- apps/web/pages/api/documents/[id]/sign.ts | 13 ++++++++++++- packages/lib/mail/sendSigningDoneMail.ts | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/apps/web/pages/api/documents/[id]/sign.ts b/apps/web/pages/api/documents/[id]/sign.ts index ef68e1a78..537d7ee72 100644 --- a/apps/web/pages/api/documents/[id]/sign.ts +++ b/apps/web/pages/api/documents/[id]/sign.ts @@ -73,6 +73,13 @@ async function postHandler(req: NextApiRequest, res: NextApiResponse) { }, }); + const signedRecipients = await prisma.recipient.findMany({ + where: { + documentId: recipient.documentId, + signingStatus: SigningStatus.SIGNED, + }, + }); + // Don't check for inserted, because currently no "sign again" scenarios exist and // this is probably the expected behaviour in unclean states. const nonSignatureFields = await prisma.field.findMany({ @@ -126,7 +133,11 @@ async function postHandler(req: NextApiRequest, res: NextApiResponse) { }); document.document = documentWithInserts; - if (documentOwner) await sendSigningDoneMail(recipient, document, documentOwner); + if (documentOwner) await sendSigningDoneMail(document, documentOwner); + + for (const signer of signedRecipients) { + await sendSigningDoneMail(document, signer); + } } return res.status(200).end(); diff --git a/packages/lib/mail/sendSigningDoneMail.ts b/packages/lib/mail/sendSigningDoneMail.ts index 67c73868e..c7b35bf93 100644 --- a/packages/lib/mail/sendSigningDoneMail.ts +++ b/packages/lib/mail/sendSigningDoneMail.ts @@ -3,7 +3,7 @@ import { addDigitalSignature } from "@documenso/signing/addDigitalSignature"; import { sendMail } from "./sendMail"; import { Document as PrismaDocument } from "@prisma/client"; -export const sendSigningDoneMail = async (recipient: any, document: PrismaDocument, user: any) => { +export const sendSigningDoneMail = async (document: PrismaDocument, user: any) => { await sendMail( user.email, `Completed: "${document.title}"`,