Files
biomedjs/app/controllers/messages.js
Dobie Wollert 0d5ebb3f43 Latest bits
2015-06-29 00:45:40 -04:00

81 lines
1.8 KiB
JavaScript

var mongoose = require('mongoose'),
email = require('emailjs'),
sprintf = require('sprintf').sprintf,
User = mongoose.model('User');
module.exports = function(config) {
var server = email.server.connect({
user: config.email.user,
password: config.email.password,
host: 'smtp.gmail.com',
ssl: true
});
return {
send: function(req, res) {
var userId = req.body.user;
if (!userId) {
return res.json(404, null);
}
User.findById(userId, function(err, user) {
if (err) return res.json(500, err);
var sender = req.user;
server.send({
text: generateMessage(sender, user, req.body),
from: config.email.user,
to: generateToLine(user),
subject: 'Message from portal'
}, function(err, message) {
console.log(err || message);
if (err) {
res.json(500, err);
} else {
res.json(null);
}
});
});
}
};
}
function generateToLine(user) {
return user.name.first + " " + user.name.last + " <" + user.email + ">";
}
function generateMessage(sender, user, message) {
var template =
"From: %(sender)s\n" +
"Message For: %(user)s\n" +
"\n" +
"Name: %(name)s\n" +
"Company: %(company)s\n" +
"Phone: %(phone)s\n" +
"Extension: %(extension)s\n" +
"\n" +
"%(messages)s\n" +
"%(notes)s\n";
var resources = {
sender: sender.name.first + " " + sender.name.last,
user: user.name.first + " " + user.name.last,
name: message.name || '',
company: message.company || '',
phone: message.phone || '',
extension: message.extension || '',
messages: '',
notes: message.notes || ''
};
message.messages.forEach(function(msg) {
if (msg.checked) {
resources.messages += msg.message + "\n";
}
});
return sprintf(template, resources);
}