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