var fs = require('fs'); var mustache = require('mustache'); var database = require('./database.js'); var logger = require('./logger.js'); var language = require('./language.js'); var Template = { /** * Obtiene la plantilla * @param {String} templateName - Nombre de la plantilla * @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) { logger.print(__LOG_ERROR, 'La plantilla ' + templateName + ' no existe'); return; } var langParams = language.load(templateName, langCode); params = Object.assign({}, langParams, params); var path = './Application/Template/' + rs[0].name + '.html'; if (!fs.existsSync(path)) { logger.print(__LOG_ERROR, 'No se ha podido cargar la plantilla ' + name + '.html'); } else { Template.render(path, params, function(tplBody) { callback({subject: params.subject, body: tplBody}); }); } }); }, /** * Renderiza las plantillas * @param {String} path - Ruta de la plantilla * @param {String} language - Idioma * @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;