@@ -26,7 +26,7 @@ import {
2626 MultirespondentSubmissionDto ,
2727 SnapshottedFormDef ,
2828} from '../../../../types/api'
29- import config from '../../../config/config'
29+ import config , { isTest } from '../../../config/config'
3030import {
3131 createLoggerWithLabel ,
3232 CustomLoggerParams ,
@@ -55,7 +55,10 @@ import {
5555} from '../submission.errors'
5656import { uploadAttachments } from '../submission.service'
5757import { AttachmentMetadata } from '../submission.types'
58- import { getMrfSubmissionWorkflowStatus } from '../submission.utils'
58+ import {
59+ getMrfSubmissionWorkflowStatus ,
60+ isAdminEmailPdfEnabled ,
61+ } from '../submission.utils'
5962import { reportSubmissionResponseTime } from '../submissions.statsd-client'
6063
6164import { MultirespondentSubmissionContent } from './multirespondent-submission.types'
@@ -66,6 +69,7 @@ import {
6669 getResponsesDataFromMrfResponses ,
6770 retrieveWorkflowStepEmailAddresses ,
6871} from './multirespondent-submission.utils'
72+ import { GrowthBook } from '@growthbook/growthbook'
6973
7074const logger = createLoggerWithLabel ( module )
7175const MultirespondentSubmission = getMultirespondentSubmissionModel ( mongoose )
@@ -798,6 +802,7 @@ interface CheckIsWorkflowCompletionEmailPdfRequiredArgs {
798802 responses : FieldResponsesV3
799803 isRejected : boolean
800804 submissionId : string
805+ growthbook ?: GrowthBook
801806}
802807
803808const checkIsWorkflowCompletionEmailPdfRequired = ( {
@@ -806,7 +811,16 @@ const checkIsWorkflowCompletionEmailPdfRequired = ({
806811 responses,
807812 isRejected,
808813 submissionId,
814+ growthbook,
809815} : CheckIsWorkflowCompletionEmailPdfRequiredArgs ) => {
816+ const isGbFlagEnabled = isAdminEmailPdfEnabled ( {
817+ growthbook,
818+ formFields : form . form_fields as FormFieldSchema [ ] ,
819+ } ) || isTest
820+
821+ if ( ! isGbFlagEnabled ) {
822+ return false
823+ }
810824 const isWorkflowCompleted = checkIsWorkflowCompleted ( {
811825 currentStepNumber,
812826 form,
@@ -834,37 +848,14 @@ type CheckIsPdfGenerationRequiredArgs = Omit<
834848> &
835849 CheckIsWorkflowCompletionEmailPdfRequiredArgs
836850
837- const checkIsPdfGenerationRequired = ( {
838- responses,
839- form,
840- currentStepActiveFields,
841- currentStepNumber,
842- isRejected,
843- submissionId,
844- } : CheckIsPdfGenerationRequiredArgs ) : boolean => {
845- return (
846- checkIfRespondentFormSummaryIsRequired ( {
847- responses,
848- formFields : form . form_fields ,
849- currentStepActiveFields,
850- } ) ||
851- checkIsWorkflowCompletionEmailPdfRequired ( {
852- currentStepNumber,
853- form,
854- responses,
855- isRejected,
856- submissionId,
857- } )
858- )
859- }
860-
861851const generatePdfAttachmentIfRequired = ( {
862852 submission,
863853 form,
864854 responses,
865855 currentStepActiveFields,
866856 currentStepNumber,
867857 isRejected,
858+ growthbook,
868859} : CheckIsPdfGenerationRequiredArgs & {
869860 submission : IMultirespondentSubmissionSchema
870861 form : Pick <
@@ -893,6 +884,7 @@ const generatePdfAttachmentIfRequired = ({
893884 responses,
894885 isRejected,
895886 submissionId,
887+ growthbook,
896888 } )
897889
898890 if ( ! isRespondentCopyPdfRequired && ! isWorkflowCompletionEmailPdfRequired ) {
@@ -945,13 +937,15 @@ export const performMultiRespondentPostSubmissionCreateActions = ({
945937 encryptedPayload,
946938 logMeta,
947939 attachments,
940+ growthbook,
948941} : {
949942 submission : IMultirespondentSubmissionSchema
950943 submissionId : string
951944 form : IPopulatedMultirespondentForm
952945 encryptedPayload : MultirespondentSubmissionDto
953946 logMeta : CustomLoggerParams [ 'meta' ]
954947 attachments ?: IAttachmentInfo [ ]
948+ growthbook ?: GrowthBook
955949} ) : ResultAsync < boolean , InvalidWorkflowTypeError | MailSendError > => {
956950 const { submissionSecretKey, responses } = encryptedPayload
957951 const currentStepNumber = 0
@@ -974,14 +968,33 @@ export const performMultiRespondentPostSubmissionCreateActions = ({
974968 submissionId,
975969 } )
976970
971+ const sendMrfRespondentCopyEmailsPdfResult = checkIfRespondentFormSummaryIsRequired ( {
972+ responses,
973+ formFields : form . form_fields ,
974+ currentStepActiveFields : form . workflow [ currentStepNumber ] ?. edit ?? [ ] ,
975+ } )
976+ ? pdfResult
977+ : okAsync ( undefined )
978+
979+ const sendMrfOutcomeEmailsPdfResult = checkIsWorkflowCompletionEmailPdfRequired ( {
980+ currentStepNumber,
981+ form,
982+ responses,
983+ isRejected : false ,
984+ submissionId,
985+ growthbook,
986+ } )
987+ ? pdfResult
988+ : okAsync ( undefined )
989+
977990 sendMrfRespondentCopyEmails ( {
978991 form,
979992 responses,
980993 submission,
981994 attachments,
982995 formFields : form . form_fields ,
983996 currentStepActiveFields : form . workflow [ currentStepNumber ] ?. edit ?? [ ] ,
984- pdfResult,
997+ pdfResult : sendMrfRespondentCopyEmailsPdfResult ,
985998 } ) . mapErr ( ( error ) => {
986999 logger . error ( {
9871000 message : 'Send multirespondent respondent copy email error' ,
@@ -1040,7 +1053,7 @@ export const performMultiRespondentPostSubmissionCreateActions = ({
10401053 responses,
10411054 submissionId,
10421055 attachments,
1043- pdfResult,
1056+ pdfResult : sendMrfOutcomeEmailsPdfResult ,
10441057 } )
10451058 } )
10461059 . mapErr ( ( error ) => {
@@ -1208,6 +1221,7 @@ export const performMultiRespondentPostSubmissionUpdateActions = ({
12081221 encryptedPayload,
12091222 logMeta,
12101223 attachments,
1224+ growthbook,
12111225} : {
12121226 submission : IMultirespondentSubmissionSchema
12131227 submissionId : string
@@ -1216,6 +1230,7 @@ export const performMultiRespondentPostSubmissionUpdateActions = ({
12161230 encryptedPayload : MultirespondentSubmissionDto
12171231 logMeta : CustomLoggerParams [ 'meta' ]
12181232 attachments ?: IAttachmentInfo [ ]
1233+ growthbook ?: GrowthBook
12191234} ) : ResultAsync <
12201235 boolean ,
12211236 | InvalidWorkflowTypeError
@@ -1290,6 +1305,26 @@ export const performMultiRespondentPostSubmissionUpdateActions = ({
12901305 snapshottedFormDef . workflow [ currentStepNumber ] ?. edit ?? [ ] ,
12911306 } )
12921307
1308+ const sendMrfRespondentCopyEmailsPdfResult = checkIfRespondentFormSummaryIsRequired ( {
1309+ responses,
1310+ formFields : snapshottedFormDef . form_fields ,
1311+ currentStepActiveFields :
1312+ snapshottedFormDef . workflow [ currentStepNumber ] ?. edit ?? [ ] ,
1313+ } )
1314+ ? pdfResult
1315+ : okAsync ( undefined )
1316+
1317+ const sendMrfOutcomeEmailsPdfResult = checkIsWorkflowCompletionEmailPdfRequired ( {
1318+ currentStepNumber,
1319+ form : snapshottedFormDef ,
1320+ responses,
1321+ isRejected : isStepRejected ,
1322+ submissionId,
1323+ growthbook,
1324+ } )
1325+ ? pdfResult
1326+ : okAsync ( undefined )
1327+
12931328 sendMrfRespondentCopyEmails ( {
12941329 form : snapshottedFormDef ,
12951330 responses,
@@ -1298,14 +1333,7 @@ export const performMultiRespondentPostSubmissionUpdateActions = ({
12981333 formFields : snapshottedFormDef . form_fields ,
12991334 currentStepActiveFields :
13001335 snapshottedFormDef . workflow [ currentStepNumber ] ?. edit ?? [ ] ,
1301- pdfResult : checkIfRespondentFormSummaryIsRequired ( {
1302- responses,
1303- formFields : snapshottedFormDef . form_fields ,
1304- currentStepActiveFields :
1305- snapshottedFormDef . workflow [ currentStepNumber ] ?. edit ?? [ ] ,
1306- } )
1307- ? pdfResult
1308- : okAsync ( undefined ) ,
1336+ pdfResult : sendMrfRespondentCopyEmailsPdfResult ,
13091337 } ) . mapErr ( ( error ) => {
13101338 logger . error ( {
13111339 message : 'Send multirespondent respondent copy email error' ,
@@ -1323,7 +1351,7 @@ export const performMultiRespondentPostSubmissionUpdateActions = ({
13231351 isApproval : true ,
13241352 isRejected : true ,
13251353 attachments : attachments ,
1326- pdfResult : pdfResult ,
1354+ pdfResult : sendMrfOutcomeEmailsPdfResult ,
13271355 } ) . mapErr ( ( error ) => {
13281356 logger . error ( {
13291357 message : 'Send mrf outcome email error' ,
@@ -1340,15 +1368,7 @@ export const performMultiRespondentPostSubmissionUpdateActions = ({
13401368 submissionId,
13411369 isApproval : checkIsFormApproval ( snapshottedFormDef ) ,
13421370 attachments : attachments ,
1343- pdfResult : checkIsWorkflowCompletionEmailPdfRequired ( {
1344- currentStepNumber,
1345- form : snapshottedFormDef ,
1346- responses,
1347- isRejected : isStepRejected ,
1348- submissionId,
1349- } )
1350- ? pdfResult
1351- : okAsync ( undefined ) ,
1371+ pdfResult : sendMrfOutcomeEmailsPdfResult ,
13521372 } )
13531373 . mapErr ( ( error ) => {
13541374 logger . error ( {
0 commit comments