diff --git a/apps/admin/controller.js b/apps/admin/controller.js index 642a546..ce90616 100644 --- a/apps/admin/controller.js +++ b/apps/admin/controller.js @@ -40,8 +40,10 @@ app.get('/email', (req, res) => { }); app.post('/email', (req, res, next) => { - const query = { 'owner.userId': req.session.auth.userId }; + const from = req.body.from; + const subject = req.body.subject; const template = req.body.content; + const context = { site: { url: `${req.protocol}://${req.get('host')}`, @@ -52,13 +54,15 @@ app.post('/email', (req, res, next) => { // @TODO res.end(); } else { + const query = { 'owner.userId': req.session.auth.userId }; + ApiUser.findOne(query, (findErr, api) => { if (findErr) { return next(findErr); } context.api = api; context.user = api.contact; - return sendgrid.renderTemplate(template, context, (tempErr, data) => { + return sendgrid.renderTemplate(template, context, (tempErr, rendered) => { if (tempErr && tempErr.name === 'Template render error') { const error = { message: tempErr.toString() }; return res.render('admin/email.html', { req, error, body: req.body }); @@ -67,8 +71,23 @@ app.post('/email', (req, res, next) => { } if (req.body.test) { - // @TODO - return res.end(); + const to = req.session.auth.email; + + return sendgrid.sendTemplate(rendered, subject, from, to, (sendErr, data) => { + let error; + + if (sendErr) { + error = sendErr; + } else { + error = { + title: 'Test sendt', + message: `Epost ble sendt til ${to}`, + class: 'positive', + }; + } + + res.render('admin/email.html', { req, error, body: req.body }); + }); } return res.render('admin/email.html', { diff --git a/lib/sendgrid.js b/lib/sendgrid.js index 0548644..64a7f13 100644 --- a/lib/sendgrid.js +++ b/lib/sendgrid.js @@ -12,3 +12,18 @@ module.exports.renderTemplate = (template, context, cb) => { return cb(err); } }; + +module.exports.sendTemplate = (template, subject, from, to, cb) => { + const email = new sendgrid.Email(); + + email.addTo(to); + email.subject = subject; + email.from = from; + email.html = template; + email.text = email.html.replace(/(<([^>]+)>)/ig, ''); + + email.addFilter('templates', 'enable', 1); + email.addFilter('templates', 'template_id', process.env.SENDGRID_TEMPLATE_ID); + + sendgrid.send(email, cb); +}; diff --git a/views/admin/email.html b/views/admin/email.html index 0408315..a7106df 100644 --- a/views/admin/email.html +++ b/views/admin/email.html @@ -30,7 +30,7 @@

Hei {% raw %}{{ user.name }}{% endraw %},

Sett inn din melding her.


-

+

Du kan også melde deg av disse epostene @@ -38,7 +38,7 @@

endre varslingsinnstillingene dine . -

+

{% endif %}