const admin = require("firebase-admin"); const moment = require("moment"); const { onCall, HttpsError } = require("firebase-functions/v2/https"); const functions = require("firebase-functions/v1"); const { generateDocument } = require("./utils/helpers.js"); const { logoBase64 } = require("./data/logoBase64.js"); const documentTemplateList = { QUOTE: { path: "./components/Quote.js", }, INVOICE: { path: "./components/Invoice.js", }, CONTRACT: { path: "./components/Contract.js", }, }; const appConfig = { company: { logoBase64, name: "SAS StarsClick", address: "8 rue de la Paix", postalCode: "75002", city: "Paris", identifier: "123456789", RCS: "123 456 789", taxIdentifier: "FR 12 345 678 912", phoneNumber: "01 23 45 67 89", supportEmail: "contact@starsclick.fr", }, }; exports.generateDocumentFromTemplate = onCall( async ({ auth = {}, data = {} }) => { try { const { type, documentData = {} } = data; const { path } = documentTemplateList[type] || {}; if (!path) { throw new Error("Invalid document type"); } const { default: DocumentImport } = await import(path); const { downloadURL } = await generateDocument({ template: DocumentImport, data: { ...documentData, creationTimestamp: moment().format("DD/MM/YYYY"), }, filePath: `documents/${moment().format("DD-MM-YYYY-HH-mm-ss")}.pdf`, }); console.log(`PDF URL: ${downloadURL}`); return { documentUrl: downloadURL }; } catch (error) { console.log(error); } } ); exports.testDocumentGeneration = functions .runWith({ memory: "512MB" }) .https.onRequest(async (req, res) => { try { // const { type } = req.query; const type = "INVOICE"; const { path } = documentTemplateList[type] || {}; if (!path) { throw new Error("Invalid document type"); } const { default: DocumentTemplate } = await import(path); const { downloadURL } = await generateDocument({ template: DocumentTemplate, data: { appConfig, }, filePath: `documents/${moment().format("DD-MM-YYYY-HH-mm-ss")}.pdf`, }); console.log(`PDF URL: ${downloadURL}`); } catch (error) { console.log(error); } });