diff --git a/app/controllers/doctemplate.controller.js b/app/controllers/doctemplate.controller.js index 18a3813..5b70b4c 100644 --- a/app/controllers/doctemplate.controller.js +++ b/app/controllers/doctemplate.controller.js @@ -224,6 +224,15 @@ const path = require('path'); // const docxConverter = require('docx-pdf'); var libre = require('libreoffice-convert'); const moment = require("moment-timezone"); +const BASE_UPLOAD_DIR = "/www/wwwroot/upload/"; + +const resolveTemplateFilePath = (fileUrl = "") => { + if (!fileUrl) return ""; + if (fileUrl.startsWith("/files/")) { + return fileUrl.replace("/files/", BASE_UPLOAD_DIR); + } + return `${__dirname.replace("/controllers", "")}${fileUrl}`; +}; exports.createPDFFromDocTemplateName = (req, res) => { @@ -271,7 +280,13 @@ exports.createPDFFromDocTemplateName = (req, res) => { }).sort({ edit_date: -1, updatedAt: -1, createdAt: -1 }).then((docTemplate) => { try { if (docTemplate) { - var templateDoc = `${__dirname.replace('/controllers', '')}${docTemplate?.file[0]?.url}`; + var templateDoc = resolveTemplateFilePath(docTemplate?.file?.[0]?.url); + if (!templateDoc || !fs.existsSync(templateDoc)) { + return res.status(404).send({ + success: false, + message: "Doc template file not found on server" + }); + } var outputFileRandom = Math.ceil(Math.random() * 100000000); var outputFile = `/tmp/${docTemplate.name}_${outputFileRandom}.docx`; var content = fs.readFileSync(templateDoc, 'binary'); @@ -425,7 +440,13 @@ exports.createDocFromDocTemplateName = (req, res) => { }).sort({ edit_date: -1, updatedAt: -1, createdAt: -1 }).then((docTemplate) => { try { if (docTemplate) { - var templateDoc = `${__dirname.replace('/controllers', '')}${docTemplate?.file[0]?.url}`; + var templateDoc = resolveTemplateFilePath(docTemplate?.file?.[0]?.url); + if (!templateDoc || !fs.existsSync(templateDoc)) { + return res.status(404).send({ + success: false, + message: "Doc template file not found on server" + }); + } var outputFileRandom = Math.ceil(Math.random() * 100000000); var outputFile = `/tmp/${docTemplate.name}_${outputFileRandom}.docx`; var content = fs.readFileSync(templateDoc, 'binary'); diff --git a/app/controllers/xlsxtemplate.controller.js b/app/controllers/xlsxtemplate.controller.js index 1d5675b..9f61e51 100644 --- a/app/controllers/xlsxtemplate.controller.js +++ b/app/controllers/xlsxtemplate.controller.js @@ -164,6 +164,15 @@ var multer = require('multer'); const path = require('path'); var libre = require('libreoffice-convert'); const moment = require('moment-timezone'); +const BASE_UPLOAD_DIR = "/www/wwwroot/upload/"; + +const resolveTemplateFilePath = (fileUrl = "") => { + if (!fileUrl) return ""; + if (fileUrl.startsWith("/files/")) { + return fileUrl.replace("/files/", BASE_UPLOAD_DIR); + } + return `${__dirname.replace("/controllers", "")}${fileUrl}`; +}; exports.createPDFFromSheetTemplateName = (req, res) => { console.log('what', __dirname.replace('/controllers', '')); @@ -241,7 +250,13 @@ exports.createPDFFromSheetTemplateName = (req, res) => { }).sort({ edit_date: -1, updatedAt: -1, createdAt: -1 }).then((excelTemplate) => { try { if (excelTemplate) { - var templateExcel = `${__dirname.replace('/controllers', '')}${excelTemplate?.file[0]?.url}`; + var templateExcel = resolveTemplateFilePath(excelTemplate?.file?.[0]?.url); + if (!templateExcel || !fs.existsSync(templateExcel)) { + return res.status(404).send({ + success: false, + message: "Sheet template file not found on server" + }); + } var outputFileRandom = Math.ceil(Math.random() * 100000000); var outputFile = `/tmp/${excelTemplate.name}_${outputFileRandom}.xlsx`; var data = fs.readFileSync(templateExcel, 'binary'); @@ -390,7 +405,13 @@ exports.createSheetFromTemplateName = (req, res) => { }).sort({ edit_date: -1, updatedAt: -1, createdAt: -1 }).then((excelTemplate) => { try { if (excelTemplate) { - var templateExcel = `${__dirname.replace('/controllers', '')}${excelTemplate?.file[0]?.url}`; + var templateExcel = resolveTemplateFilePath(excelTemplate?.file?.[0]?.url); + if (!templateExcel || !fs.existsSync(templateExcel)) { + return res.status(404).send({ + success: false, + message: "Sheet template file not found on server" + }); + } var outputFileRandom = Math.ceil(Math.random() * 100000000); var outputFile = `/tmp/${excelTemplate.name}_${outputFileRandom}.xlsx`; var data = fs.readFileSync(templateExcel, 'binary');