import { Injectable } from "@nestjs/common"; import { createPersianPdfDocument, persianPdfToBuffer, } from "src/helpers/persian-pdf-document"; import { InsurerFileReportPdfResult, InsurerFileReportViewModel, } from "./case-expert-report.types"; import { PR } from "./persian-report-labels"; @Injectable() export class CaseExpertReportPdfService { async render(model: InsurerFileReportViewModel): Promise { const pdf = createPersianPdfDocument(); pdf.addTitle(model.title); pdf.addKeyValue(PR.publicId, model.publicId); pdf.addKeyValue(PR.requestNo, model.requestNo); pdf.addBlank(); for (const section of model.sections) { pdf.addSection(section.title); for (const field of section.fields) { pdf.addKeyValue(field.label, field.value); } pdf.addBlank(); } const buffer = await persianPdfToBuffer(pdf); const safeId = (model.publicId || "file").replace(/[^\w.-]+/g, "_"); return { buffer, filename: `insurer-file-report-${safeId}.pdf`, }; } }