feat: complete day 10

This commit is contained in:
Ayobami
2025-07-16 18:59:35 +01:00
parent 825583e645
commit 001e4b6d00
7 changed files with 280 additions and 38 deletions
+29
View File
@@ -0,0 +1,29 @@
const express = require("express");
const router = express.Router();
const fs = require("fs");
const path = require("path");
const pdf = require("html-pdf-node");
router.get("/:code", async (req, res) => {
const { amount = 1, service = "software service" } = req.query;
// Read the invoice template
const templatePath = path.join(__dirname, "../invoice.html");
let html = fs.readFileSync(templatePath, "utf8");
// Replace placeholders in the template
html = html
.replace("Website design", service)
.replace("$300.00", `$${amount}.00`)
.replace("Total: $385.00", `Total: $${amount}.00`);
// Generate PDF
let file = { content: html };
pdf.generatePdf(file, { format: "A4" }).then((pdfBuffer) => {
res.setHeader("Content-Type", "application/pdf");
res.setHeader("Content-Disposition", "attachment; filename=invoice.pdf");
res.send(pdfBuffer);
});
});
module.exports = router;
+16 -3
View File
@@ -1,9 +1,22 @@
var express = require('express');
var express = require("express");
var router = express.Router();
const QRCode = require("qrcode");
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
router.get("/", function (req, res, next) {
res.render("index", { title: "Express" });
});
router.get("/code", async function (req, res, next) {
const code = Math.random().toString(36).substring(2, 8); // random code
const qrUrl = `/api/v1/code/${code}?amount=1&service=software%20service`;
const qrData = await QRCode.toDataURL(
`http://localhost:${process.env.PORT || 3000}${qrUrl}`
);
res.render("code", {
qrData,
qrUrl: `http://localhost:${process.env.PORT || 3000}${qrUrl}`,
});
});
module.exports = router;