Skip to content

Commit 476f28d

Browse files
committed
fix: encapsulate pdf render data generation
1 parent b5fcdbc commit 476f28d

File tree

3 files changed

+38
-38
lines changed

3 files changed

+38
-38
lines changed

src/app/modules/submission/encrypt-submission/encrypt-submission.service.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ import { getEncryptSubmissionModel } from '../../../models/submission.server.mod
2121
import { AutoreplyPdfGenerationError } from '../../../services/mail/mail.errors'
2222
import MailService from '../../../services/mail/mail.service'
2323
import { AutoReplyMailData } from '../../../services/mail/mail.types'
24-
import {
25-
generateAutoreplyPdf,
26-
generatePdfRenderData,
27-
} from '../../../services/mail/mail.utils'
24+
import { generateAutoreplyPdf } from '../../../services/mail/mail.utils'
2825
import { createQueryWithDateParam } from '../../../utils/date'
2926
import { getMongoErrorMessage } from '../../../utils/handle-mongo-error'
3027
import { DatabaseError, PossibleDatabaseError } from '../../core/core.errors'
@@ -194,16 +191,16 @@ const generatePdfAttachmentIfRequired = ({
194191
return okAsync(undefined)
195192
}
196193

197-
const pdfRenderData = generatePdfRenderData({
194+
const autoReplyData = {
198195
refNo: submission.id,
199196
formTitle: form.title,
200197
submissionDateTime: submission.created ?? new Date(),
201198
responsesData,
202199
formUrl: `${config.app.appUrl}/${form._id}`,
203-
})
200+
}
204201

205202
const DEFAULT_RESPONSE_PDF_FILENAME = 'response.pdf'
206-
return generateAutoreplyPdf(pdfRenderData, true).map((pdfBuffer) => ({
203+
return generateAutoreplyPdf(autoReplyData, true).map((pdfBuffer) => ({
207204
filename: DEFAULT_RESPONSE_PDF_FILENAME,
208205
content: Buffer.copyBytesFrom(pdfBuffer),
209206
}))

src/app/modules/submission/multirespondent-submission/multirespondent-submission.service.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,7 @@ import {
3737
MailSendError,
3838
} from '../../../services/mail/mail.errors'
3939
import MailService from '../../../services/mail/mail.service'
40-
import {
41-
generateAutoreplyPdf,
42-
generatePdfRenderData,
43-
} from '../../../services/mail/mail.utils'
40+
import { generateAutoreplyPdf } from '../../../services/mail/mail.utils'
4441
import { transformMongoError } from '../../../utils/handle-mongo-error'
4542
import { DatabaseError } from '../../core/core.errors'
4643
import { isFormMultirespondent } from '../../form/form.utils'
@@ -896,16 +893,16 @@ const generatePdfAttachmentIfRequired = ({
896893
responses,
897894
})
898895

899-
const pdfRenderData = generatePdfRenderData({
896+
const autoReplyData = {
900897
refNo: submissionId,
901898
formTitle: form.title,
902899
submissionDateTime: submission.created ?? new Date(),
903900
responsesData,
904901
formUrl: `${config.app.appUrl}/${form._id}`,
905-
})
902+
}
906903

907904
const DEFAULT_RESPONSE_PDF_FILENAME = 'response.pdf'
908-
const pdfResult = generateAutoreplyPdf(pdfRenderData, true).map(
905+
const pdfResult = generateAutoreplyPdf(autoReplyData, true).map(
909906
(pdfBuffer) => ({
910907
filename: DEFAULT_RESPONSE_PDF_FILENAME,
911908
content: Buffer.copyBytesFrom(pdfBuffer),

src/app/services/mail/mail.utils.ts

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -113,19 +113,21 @@ export const generateBounceNotificationHtml = (
113113
return safeRenderFile(pathToTemplate, htmlData)
114114
}
115115

116-
export const generatePdfRenderData = ({
117-
refNo,
118-
formTitle,
119-
submissionDateTime,
120-
responsesData,
121-
formUrl,
122-
}: {
116+
interface AutoReplyData {
123117
refNo: string
124118
formTitle: string
125119
submissionDateTime: Date
126120
responsesData: EmailRespondentConfirmationField[]
127121
formUrl: string
128-
}): AutoreplySummaryRenderData => {
122+
}
123+
124+
const generatePdfRenderData = ({
125+
refNo,
126+
formTitle,
127+
submissionDateTime,
128+
responsesData,
129+
formUrl,
130+
}: AutoReplyData): AutoreplySummaryRenderData => {
129131
const pdfResponsesData = responsesData.map(
130132
({ question, answerTemplate, answer, fieldType }) => ({
131133
question,
@@ -147,7 +149,7 @@ export const generatePdfRenderData = ({
147149
}
148150

149151
export const generateAutoreplyPdf = (
150-
renderData: AutoreplySummaryRenderData,
152+
autoReplyData: AutoReplyData,
151153
isUseLambdaOutput: boolean,
152154
): ResultAsync<Buffer, AutoreplyPdfGenerationError> => {
153155
const pathToTemplate = `${__dirname}/../../views/templates/submit-form-summary-pdf.server.view.html`
@@ -162,22 +164,26 @@ export const generateAutoreplyPdf = (
162164
},
163165
})
164166

165-
return safeRenderFile(pathToTemplate, renderData).andThen((summaryHtml) => {
166-
return ResultAsync.fromPromise(
167-
generatePdfFromHtml(summaryHtml, isUseLambdaOutput),
168-
(error) => {
169-
logger.error({
170-
meta: {
171-
action: 'generateAutoreplyPdf',
172-
},
173-
message: 'Error occurred whilst generating autoreply PDF',
174-
error,
175-
})
167+
const pdfRenderData = generatePdfRenderData(autoReplyData)
176168

177-
return new AutoreplyPdfGenerationError()
178-
},
179-
)
180-
})
169+
return safeRenderFile(pathToTemplate, pdfRenderData).andThen(
170+
(summaryHtml) => {
171+
return ResultAsync.fromPromise(
172+
generatePdfFromHtml(summaryHtml, isUseLambdaOutput),
173+
(error) => {
174+
logger.error({
175+
meta: {
176+
action: 'generateAutoreplyPdf',
177+
},
178+
message: 'Error occurred whilst generating autoreply PDF',
179+
error,
180+
})
181+
182+
return new AutoreplyPdfGenerationError()
183+
},
184+
)
185+
},
186+
)
181187
}
182188

183189
export const generateAutoreplyHtml = (

0 commit comments

Comments
 (0)