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 emailUser = await Self.app.models.EmailUser.findById(ctx.req.accessToken.userId, {fields: ['email']}); let html = `<strong>Motivo</strong>:<br/>${reason}<br/>`; html += `<strong>Usuario</strong>:<br/>${ctx.req.accessToken.userId} ${emailUser.email}<br/>`; delete additionalData.backError.config.headers.Authorization; const httpRequest = JSON.parse(additionalData?.httpRequest); if (httpRequest) delete httpRequest.config.headers.Authorization; additionalData.httpRequest = httpRequest; for (const data in additionalData) html += `<strong>${data}</strong>:<br/>${tryParse(additionalData[data])}<br/>`; const subjectReason = httpRequest?.data?.error; await smtp.send({ to: `${config.app.reportEmail}, ${emailUser.email}`, subject: '[Support-Salix] ' + additionalData?.frontPath + ' ' + subjectReason?.name + ':' + subjectReason?.message, html }); }; function tryParse(value) { try { try { value = JSON.parse(value); } catch {} return JSON.stringify(value, null, ' ').split('\n').join('<br>'); } catch { return value; } } };