TASK22224: modernize generatepdf handlers
This commit is contained in:
@@ -112,16 +112,16 @@ import { respondError, respondSuccess } from "../middleware/apiResponse";
|
||||
// ApiProxy.post(async (req, res) => {
|
||||
|
||||
export default async function handler(req, res) {
|
||||
var checkHash = req.query.hash;
|
||||
var appealType = req.query.appealType;
|
||||
var isDownload = req.query?.download === "true";
|
||||
const checkHash = req.query.hash;
|
||||
const appealType = req.query.appealType;
|
||||
const isDownload = req.query?.download === "true";
|
||||
|
||||
let appealBodyObj =
|
||||
typeof req.body === "string" ? JSON.parse(req.body) : req.body;
|
||||
var containerID = appealBodyObj.containerID;
|
||||
var casefolderID = appealBodyObj.casefolderID;
|
||||
var caseRef = appealBodyObj.caseRef;
|
||||
var checkquerypath = "/api/file/generateappealpdf";
|
||||
const containerID = appealBodyObj.containerID;
|
||||
const casefolderID = appealBodyObj.casefolderID;
|
||||
const caseRef = appealBodyObj.caseRef;
|
||||
let checkquerypath = "/api/file/generateappealpdf";
|
||||
|
||||
if (
|
||||
typeof checkHash === "undefined" ||
|
||||
@@ -184,92 +184,97 @@ export default async function handler(req, res) {
|
||||
}
|
||||
};
|
||||
|
||||
const tempCaseBlob = await getTempCaseBlob(containerID, casefolderID);
|
||||
const blobProgress = await getProgressBlobs(containerID, casefolderID).then(
|
||||
(data) => {
|
||||
//console.log("Progress blob path:", data);
|
||||
return downloadProgressFile(containerID, data.path, casefolderID);
|
||||
}
|
||||
);
|
||||
try {
|
||||
const tempCaseBlob = await getTempCaseBlob(containerID, casefolderID);
|
||||
const progressBlob = await getProgressBlobs(containerID, casefolderID);
|
||||
const blobProgress = await downloadProgressFile(
|
||||
containerID,
|
||||
progressBlob.path,
|
||||
casefolderID
|
||||
);
|
||||
|
||||
const uniqueArray = appealBodyObj.filesList.filter((obj, index, self) => {
|
||||
// Check if the name has already been encountered
|
||||
return index === self.findIndex((t) => t.name === obj.name);
|
||||
});
|
||||
|
||||
Object.assign(blobProgress, {
|
||||
"filesList": uniqueArray,
|
||||
"caseObj": tempCaseBlob
|
||||
});
|
||||
|
||||
const pickListData = await getPickLists(appealType);
|
||||
|
||||
// ReactPDF.render(
|
||||
// <MyDocument docProps={blobProgress} pickListData={pickListData} />,
|
||||
// process.cwd() + `/tmp/${blobProgress.pinswg_name}.pdf`
|
||||
// );
|
||||
|
||||
// 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 renderedPDF = await ReactPDF.renderToStream(
|
||||
<MyDocument docProps={blobProgress} pickListData={pickListData} />
|
||||
);
|
||||
|
||||
const repDate = new Date();
|
||||
|
||||
let day = repDate.getDate();
|
||||
let month = repDate.getMonth() + 1;
|
||||
let year = repDate.getFullYear();
|
||||
|
||||
const pdfFileName =
|
||||
year +
|
||||
"-" +
|
||||
("0" + month).slice(-2) +
|
||||
"-" +
|
||||
("0" + day).slice(-2) +
|
||||
"_-_Appeal_Form";
|
||||
|
||||
const renderedPDFBuffer = await streamToBuffer(renderedPDF);
|
||||
|
||||
await createAppealPDFBlob(
|
||||
renderedPDFBuffer,
|
||||
containerID,
|
||||
blobProgress.pinswg_name || blobProgress.caseObj.ticketnumber
|
||||
)
|
||||
.then((data) => {
|
||||
if (isDownload) {
|
||||
const filename = `${pdfFileName}.pdf`;
|
||||
res.setHeader("Content-Type", "application/pdf");
|
||||
res.setHeader(
|
||||
"Content-Disposition",
|
||||
`attachment; filename="${filename}"`
|
||||
);
|
||||
return res.status(200).send(renderedPDFBuffer);
|
||||
const uniqueArray = appealBodyObj.filesList.filter(
|
||||
(obj, index, self) => {
|
||||
return index === self.findIndex((t) => t.name === obj.name);
|
||||
}
|
||||
return respondSuccess(res, {
|
||||
status: "success",
|
||||
data: data,
|
||||
path: `/files/${pdfFileName}.pdf`
|
||||
});
|
||||
})
|
||||
.catch(() => {
|
||||
return respondError(res, {
|
||||
status: 400,
|
||||
code: "GENERATE_APPEAL_PDF_FAILED",
|
||||
message: "Failed to generate appeal PDF"
|
||||
});
|
||||
);
|
||||
|
||||
Object.assign(blobProgress, {
|
||||
"filesList": uniqueArray,
|
||||
"caseObj": tempCaseBlob
|
||||
});
|
||||
|
||||
const pickListData = await getPickLists(appealType);
|
||||
|
||||
// ReactPDF.render(
|
||||
// <MyDocument docProps={blobProgress} pickListData={pickListData} />,
|
||||
// process.cwd() + `/tmp/${blobProgress.pinswg_name}.pdf`
|
||||
// );
|
||||
|
||||
// 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 renderedPDF = await ReactPDF.renderToStream(
|
||||
React.createElement(MyDocument, {
|
||||
docProps: blobProgress,
|
||||
pickListData: pickListData
|
||||
})
|
||||
);
|
||||
|
||||
const repDate = new Date();
|
||||
|
||||
let day = repDate.getDate();
|
||||
let month = repDate.getMonth() + 1;
|
||||
let year = repDate.getFullYear();
|
||||
|
||||
const pdfFileName =
|
||||
year +
|
||||
"-" +
|
||||
("0" + month).slice(-2) +
|
||||
"-" +
|
||||
("0" + day).slice(-2) +
|
||||
"_-_Appeal_Form";
|
||||
|
||||
const renderedPDFBuffer = await streamToBuffer(renderedPDF);
|
||||
|
||||
const data = await createAppealPDFBlob(
|
||||
renderedPDFBuffer,
|
||||
containerID,
|
||||
blobProgress.pinswg_name || blobProgress.caseObj.ticketnumber
|
||||
);
|
||||
|
||||
if (isDownload) {
|
||||
const filename = `${pdfFileName}.pdf`;
|
||||
res.setHeader("Content-Type", "application/pdf");
|
||||
res.setHeader(
|
||||
"Content-Disposition",
|
||||
`attachment; filename="${filename}"`
|
||||
);
|
||||
return res.status(200).send(renderedPDFBuffer);
|
||||
}
|
||||
|
||||
return respondSuccess(res, {
|
||||
status: "success",
|
||||
data: data,
|
||||
path: `/files/${pdfFileName}.pdf`
|
||||
});
|
||||
} catch (error) {
|
||||
return respondError(res, {
|
||||
status: 400,
|
||||
code: "GENERATE_APPEAL_PDF_FAILED",
|
||||
message: "Failed to generate appeal PDF"
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ import { respondError, respondSuccess } from "../middleware/apiResponse";
|
||||
|
||||
export default async function handler(req, res) {
|
||||
const shouldDownload = req.query.download === "true";
|
||||
var checkHash = req.query.hash;
|
||||
const checkHash = req.query.hash;
|
||||
let reqBodyobj =
|
||||
typeof req.body === "string" ? JSON.parse(req.body) : req.body;
|
||||
|
||||
@@ -169,15 +169,15 @@ export default async function handler(req, res) {
|
||||
// "\n//////////////////////\n"
|
||||
// );
|
||||
|
||||
var containerID = reqBodyobj.containerID;
|
||||
var casefolderID = reqBodyobj.casefolderID;
|
||||
var caseRef = reqBodyobj.ticketnumber || reqBodyobj.caseRef;
|
||||
var representationType = reqBodyobj.representationType;
|
||||
var repRaiser = reqBodyobj.lastname;
|
||||
var localeSelect = reqBodyobj.locale;
|
||||
const containerID = reqBodyobj.containerID;
|
||||
const casefolderID = reqBodyobj.casefolderID;
|
||||
const caseRef = reqBodyobj.ticketnumber || reqBodyobj.caseRef;
|
||||
const representationType = reqBodyobj.representationType;
|
||||
const repRaiser = reqBodyobj.lastname;
|
||||
const localeSelect = reqBodyobj.locale;
|
||||
//console.log("there are files:", Object.keys(req.files).length);
|
||||
|
||||
var checkquerypath = "/api/file/generatepdf";
|
||||
let checkquerypath = "/api/file/generatepdf";
|
||||
|
||||
if (shouldDownload) {
|
||||
checkquerypath += "?download=true";
|
||||
@@ -336,40 +336,40 @@ export default async function handler(req, res) {
|
||||
});
|
||||
};
|
||||
|
||||
const renderedPDFStream = await ReactPDF.renderToStream(
|
||||
<MyDocument docProps={reqBodyobj} />
|
||||
);
|
||||
const renderedPDFBuffer = await streamToBuffer(renderedPDFStream);
|
||||
try {
|
||||
const renderedPDFStream = await ReactPDF.renderToStream(
|
||||
React.createElement(MyDocument, { docProps: reqBodyobj })
|
||||
);
|
||||
const renderedPDFBuffer = await streamToBuffer(renderedPDFStream);
|
||||
|
||||
await createRepPDFBlob(
|
||||
renderedPDFBuffer,
|
||||
containerID,
|
||||
caseRef,
|
||||
reqBodyobj.repfile_name
|
||||
)
|
||||
.then((data) => {
|
||||
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);
|
||||
}
|
||||
const data = await createRepPDFBlob(
|
||||
renderedPDFBuffer,
|
||||
containerID,
|
||||
caseRef,
|
||||
reqBodyobj.repfile_name
|
||||
);
|
||||
|
||||
return respondSuccess(res, {
|
||||
status: "success",
|
||||
data: data,
|
||||
path: `${caseRef}/${reqBodyobj.repfile_name}/files/${reqBodyobj.repfile_name}.pdf`
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
consoleLogger(error);
|
||||
return respondError(res, {
|
||||
status: 400,
|
||||
code: "GENERATE_PDF_FAILED",
|
||||
message: "Failed to generate PDF"
|
||||
});
|
||||
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 respondSuccess(res, {
|
||||
status: "success",
|
||||
data: data,
|
||||
path: `${caseRef}/${reqBodyobj.repfile_name}/files/${reqBodyobj.repfile_name}.pdf`
|
||||
});
|
||||
} catch (error) {
|
||||
consoleLogger(error);
|
||||
return respondError(res, {
|
||||
status: 400,
|
||||
code: "GENERATE_PDF_FAILED",
|
||||
message: "Failed to generate PDF"
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user