49 lines
1.8 KiB
JavaScript
49 lines
1.8 KiB
JavaScript
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;
|