chekc box to download questionnaire
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user