chekc box to download questionnaire

This commit is contained in:
2026-03-09 12:13:24 +00:00
parent e2c79d6b0f
commit 2c6d110d9b
7 changed files with 375 additions and 226 deletions
+36 -8
View File
@@ -107,27 +107,31 @@ import { consoleLogger } from "../../../actions";
// ApiProxy.post(async (req, res) => {
export default async function handler(req, res) {
const shouldDownload = req.query.download === "true";
var checkHash = req.query.hash;
let reqBodyobj = req.body; //JSON.parse(req.body);
let reqBodyobj =
typeof req.body === "string" ? JSON.parse(req.body) : req.body;
const cleanFilesList = (blobList) => {
let newblobList = blobList.filesList;
let newblobList = Array.isArray(blobList?.filesList)
? blobList.filesList
: [];
function removeNullObjects(arr) {
if (arr.length === 0) {
if (!Array.isArray(arr) || arr.length === 0) {
return arr;
}
return arr.filter((obj) => obj !== null);
}
function removeObjectsWithUndefinedKey(arr, key) {
if (arr.length === 0) {
if (!Array.isArray(arr) || arr.length === 0) {
return arr;
}
return arr.filter((obj) => obj[key] !== undefined);
}
function removeEmptyObjects(arr) {
if (arr.length === 0) {
if (!Array.isArray(arr) || arr.length === 0) {
return arr;
}
return arr.filter(
@@ -149,7 +153,7 @@ export default async function handler(req, res) {
return blobList;
};
reqBodyobj = reqBodyobj.hasOwnProperty("filesList")
reqBodyobj = reqBodyobj?.hasOwnProperty("filesList")
? cleanFilesList(reqBodyobj)
: reqBodyobj;
@@ -296,12 +300,26 @@ export default async function handler(req, res) {
// process.cwd() + `/tmp/${reqBodyobj.repfile_name}.pdf`
// );
const renderedPDF = await ReactPDF.renderToStream(
const streamToBuffer = async (readableStream) => {
return new Promise((resolve, reject) => {
const chunks = [];
readableStream.on("data", (chunk) => {
chunks.push(
Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)
);
});
readableStream.on("end", () => resolve(Buffer.concat(chunks)));
readableStream.on("error", reject);
});
};
const renderedPDFStream = await ReactPDF.renderToStream(
<MyDocument docProps={reqBodyobj} />
);
const renderedPDFBuffer = await streamToBuffer(renderedPDFStream);
await createRepPDFBlob(
renderedPDF,
renderedPDFBuffer,
containerID,
caseRef,
reqBodyobj.repfile_name
@@ -312,6 +330,16 @@ export default async function handler(req, res) {
`${caseRef}/files/${reqBodyobj.repfile_name}.pdf`,
"\n/////////////////////////"
);
if (shouldDownload) {
const filename = `${reqBodyobj.repfile_name || "questionnaire"}.pdf`;
res.setHeader("Content-Type", "application/pdf");
res.setHeader(
"Content-Disposition",
`attachment; filename="${filename}"`
);
return res.status(200).send(renderedPDFBuffer);
}
return res.status(200).json({
status: "success",
data: data,