Files
biomedjs/app/controllers/messages.js

81 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

2013-05-06 03:38:29 -04:00
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);
2013-09-04 03:05:47 -04:00
var sender = req.user;
2013-05-06 03:38:29 -04:00
server.send({
2013-09-04 03:05:47 -04:00
text: generateMessage(sender, user, req.body),
2013-05-06 03:38:29 -04:00
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 + ">";
}
2013-09-04 03:05:47 -04:00
function generateMessage(sender, user, message) {
2013-05-06 03:38:29 -04:00
var template =
2013-09-04 03:05:47 -04:00
"From: %(sender)s\n" +
2013-05-06 03:38:29 -04:00
"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 = {
2013-09-04 03:05:47 -04:00
sender: sender.name.first + " " + sender.name.last,
2013-05-06 03:38:29 -04:00
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);
}