var fs = require('fs'); var mustache = require('mustache'); var database = require('./database.js'); var language = require('./language.js'); var path = require('path'); var Template = { /** * Obtiene la plantilla * @param {String} templateName - Nombre de la plantilla * @param {Object} langCode - Código del idioma * @param {Object} params - Datos a reemplazar. * @param {Object} callback - Callback */ getTemplate: function(templateName, langCode, params, callback) { database.pool.query('SELECT name, attachmentPath FROM vn.mailTemplates WHERE name = ?', [templateName], function(error, rs) { // Comprobamos que exista la plantilla if (rs.length == 0) throw new Error('La plantilla ' + templateName + ' no existe'); var langParams = language.load(templateName, langCode); params = Object.assign({}, langParams, params); var templatePath = path.join(__dirname, 'Template', `${rs[0].name}.html`); if (!fs.existsSync(templatePath)) throw new Error('No se ha podido cargar la plantilla ' + templateName + '.html'); Template.render(templatePath, params, function(tplBody) { callback({subject: params.subject, body: tplBody}); }); }); }, /** * Renderiza las plantillas * @param {String} path - Ruta de la plantilla * @param {Object} params - Listado de parámetros a remplazar * @param {Object} callback - Callback */ render: function(path, params, callback) { fs.readFile(path, 'utf8', function(error, body) { mustache.parse(body); callback(mustache.render(body, params)); }); } }; module.exports = Template;