UNPKG

@sourceloop/ctrl-plane-tenant-management-service

Version:

Tenant Management microservice for SaaS control plane

68 lines 2.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InvoiceHelperService = void 0; const tslib_1 = require("tslib"); const pdfkit_1 = tslib_1.__importDefault(require("pdfkit")); const node_fs_1 = tslib_1.__importDefault(require("node:fs")); const repository_1 = require("@loopback/repository"); const repositories_1 = require("../repositories"); const context_1 = require("@loopback/context"); const LARGE_SIZE = 16; const MEDIUM_SIZE = 12; let InvoiceHelperService = class InvoiceHelperService { constructor(invoiceRepository) { this.invoiceRepository = invoiceRepository; } async createInvoice(invoice) { return this.invoiceRepository.create(invoice); } async downloadInvoice(id) { const invoice = await this.invoiceRepository.findById(id); if (!invoice) { throw new Error('Invoice with given id does not exist'); } const pdfFilePath = await this.generatePDF(invoice); invoice.invoiceFile = pdfFilePath; await this.invoiceRepository.updateById(invoice.id, invoice); } async generatePDF(invoice) { const doc = new pdfkit_1.default(); const fileName = `invoice_${invoice.id}.pdf`; const writeStream = node_fs_1.default.createWriteStream(fileName); doc.pipe(writeStream); // Write invoice details to PDF doc .fontSize(LARGE_SIZE) .text('Invoice Details', { underline: true }) .moveDown(); doc.fontSize(MEDIUM_SIZE).text(`Invoice ID: ${invoice.id}`).moveDown(); doc .fontSize(MEDIUM_SIZE) .text(`Start Date: ${invoice.startDate}`) .moveDown(); doc.fontSize(MEDIUM_SIZE).text(`End Date: ${invoice.endDate}`).moveDown(); doc .fontSize(MEDIUM_SIZE) .text(`Amount: ${invoice.amount} ${invoice.currencyCode}`) .moveDown(); doc.fontSize(MEDIUM_SIZE).text(`Due Date: ${invoice.dueDate}`).moveDown(); doc.fontSize(MEDIUM_SIZE).text(`Status: ${invoice.status}`).moveDown(); // End PDF generation doc.end(); return new Promise((resolve, reject) => { writeStream.on('finish', () => { resolve(fileName); }); writeStream.on('error', err => { reject(err); }); }); } }; exports.InvoiceHelperService = InvoiceHelperService; exports.InvoiceHelperService = InvoiceHelperService = tslib_1.__decorate([ (0, context_1.injectable)({ scope: context_1.BindingScope.TRANSIENT }), tslib_1.__param(0, (0, repository_1.repository)(repositories_1.InvoiceRepository)), tslib_1.__metadata("design:paramtypes", [repositories_1.InvoiceRepository]) ], InvoiceHelperService); //# sourceMappingURL=invoice-helper.service.js.map