forked from Yara724/api
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
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<InsurerFileReportPdfResult> {
|
|
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`,
|
|
};
|
|
}
|
|
}
|