import { Request, Response } from "express"; import { PdfExport } from "../../../helpers/pdfExport"; import DynamicQueryBuilder from "../../../helpers/dynamicQueryBuilder"; import QueryStoreService from "../../../service/configuration/queryStoreService"; /** * @description print list by query and template * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function printListByQueryAndTemplate(req: Request, res: Response): Promise<any> { const title = req.body.title; const queryStore = req.body.queryStore; const headerId = req.body.headerId ?? null; const bodyId = req.body.bodyId ?? null; const footerId = req.body.footerId ?? null; const headerHeight = req.body.headerHeight ?? null; const footerHeight = req.body.footerHeight ?? null; // \/ integrate into query builder execution via shortcut //await MemberService.getByRunningMembership(); //await MemberService.getAll({ noLimit:true }); let query = (await QueryStoreService.getById(queryStore)).query; await DynamicQueryBuilder.executeQuery({ query, noLimit: true }); let pdf = await PdfExport.renderFile({ title: title, template: "listprint", saveToDisk: false, data: { today: new Date(), }, customTemplate: { headerId, footerId, bodyId, headerHeight, footerHeight, }, }); let pdfbuffer = Buffer.from(pdf); res.setHeader("Content-Type", "application/pdf"); res.setHeader("Content-Length", pdfbuffer.byteLength); res.setHeader("Content-Disposition", "inline; filename=preview.pdf"); res.send(pdfbuffer); }