53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
|
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);
|
||
|
}
|