68 lines
2.2 KiB
JavaScript
68 lines
2.2 KiB
JavaScript
const smtp = require('vn-print/core/smtp');
|
|
const config = require('vn-print/core/config');
|
|
|
|
module.exports = Self => {
|
|
Self.remoteMethodCtx('sendToSupport', {
|
|
description: 'Send mail to support',
|
|
accessType: 'WRITE',
|
|
accepts: [
|
|
{
|
|
arg: 'reason',
|
|
type: 'string',
|
|
description: 'The reason'
|
|
},
|
|
{
|
|
arg: 'additionalData',
|
|
type: 'object',
|
|
required: true,
|
|
description: 'The additional data'
|
|
}
|
|
],
|
|
returns: {
|
|
type: 'object',
|
|
root: true
|
|
},
|
|
http: {
|
|
path: `/send-to-support`,
|
|
verb: 'POST'
|
|
}
|
|
});
|
|
|
|
Self.sendToSupport = async(ctx, reason, additionalData) => {
|
|
const userId = ctx.req.accessToken.userId;
|
|
const emailUser =
|
|
await Self.app.models.EmailUser.findById(userId, {fields: ['email']});
|
|
const {code, message, path, request, status, statusText, config: errConfig, name} = additionalData;
|
|
|
|
let html = `<h2>Motivo: ${reason}</h2>`;
|
|
html += `<h3>Usuario: ${userId} ${emailUser.email}</h3>`;
|
|
html += `<h3>Additional Data:</h3>`;
|
|
html += `<ul><li>Code: ${code}</li>`;
|
|
html += `<li>Message: ${message}</li>`;
|
|
html += `<li>Path: ${path}</li>`;
|
|
html += `<li>Request: ${request}</li>`;
|
|
html += `<li>Status: ${status}</li>`;
|
|
html += `<li>StatusText: ${statusText}</li>`;
|
|
html += `<li>Config:</li><ul style="list-style-type: square;">`;
|
|
for (const [key, val] of Object.entries(errConfig)) html += `<li>${key}: ${parse(val)}</li>`;
|
|
html += '</ul></ul>';
|
|
|
|
await smtp.send({
|
|
to: `${config.app.reportEmail}, ${emailUser.email}`,
|
|
subject: `[Support-Salix] ${path} ${name}: ${message}`,
|
|
html
|
|
});
|
|
};
|
|
|
|
function parse(value) {
|
|
try {
|
|
try {
|
|
value = JSON.parse(value);
|
|
} catch {}
|
|
return JSON.stringify(value, null, ' ').split('\n').join('<br>');
|
|
} catch {
|
|
return value;
|
|
}
|
|
}
|
|
};
|