/* Email Notifications Helper Class */ var app = require('../app'); var communicator = require('../communicator'); var debug = require('debug')('rallly'); var mandrill = require('mandrill-api'); var mandrill_client = new mandrill.Mandrill(app.get('mandrillAPIKey')); communicator.on('event:create', function(event){ if (!event.creator.allowNotifications && event.isClosed) return; sendEmailConfirmation(event); sendInvites(event); }); communicator.on('event:update:creator.email', function(event, oldEvent){ if (!event.creator.allowNotifications && event.isClosed) return; verifyEmail(event); }); communicator.on('event:delete', function(event){ deleteConfirmation(event); }); // Send confirmation to the creator of the event with a link to verify the creators email address var sendEmailConfirmation = function(event){ var message = { subject : "Rallly: " + event.title + " - Verify Email Address", from_email : 'noreply@rallly.co', from_name : 'Rallly', to: [{ 'email': event.creator.email }], global_merge_vars : [{ 'name' : 'TITLE', 'content' : 'Your event ' + event.title + ' has been created successfully.' }, { 'name' : 'MESSAGE', 'content' : 'Hi ' + event.creator.name + ',

' + 'An email has been sent to each participant with a link to the event.

' + 'Important: To continue receiving email notifications about this event, please click the button below to verify your email address.' }, { 'name' : 'BUTTONTEXT', 'content' : 'Verify Email Address' }, { 'name' : 'BUTTONLINK', 'content' : app.get('absoluteUrl')('verify/'+event._id+'/code/'+event.__private.verificationCode) }] } mandrill_client.messages.sendTemplate({ message : message, template_name : 'rallly-standard', async : true, template_content : [] }, mandrillSuccessHandler, mandrillErrorHandler); } // Send an invite to all participants of the evnet var sendInvites = function(event){ event.emails.forEach(function(item){ var toEmail = item.email; var message = { subject : "Rallly: " + event.title, from_email : 'noreply@rallly.co', from_name : 'Rallly', to: [{ 'email': toEmail }], headers : { 'Reply-To' : event.creator.email }, global_merge_vars : [{ 'name' : 'TITLE', 'content' : event.creator.name + ' has invited you to participate in their event: ' + event.title, }, { 'name' : 'MESSAGE', 'content' : 'Rallly is a free collaborative scheduling service that lets you and your friends vote on a date to host an event. ' + 'Click on the button below to visit the event page and vote on the dates that best suit you. ' }, { 'name' : 'BUTTONTEXT', 'content' : 'View Event' }, { 'name' : 'BUTTONLINK', 'content' : app.get('absoluteUrl')(event._id) }] } mandrill_client.messages.sendTemplate({ message : message, template_name : 'rallly-standard', async : true, template_content : [] }, mandrillSuccessHandler, mandrillErrorHandler); }) } // This message is sent when the user want to verify an email address after the event has been created var verifyEmail = function(event){ var message = { subject : "Rallly: " + event.title + " - Verify Email Address", from_email : 'noreply@rallly.co', from_name : 'Rallly', to: [{ 'email': event.creator.email }], global_merge_vars : [{ 'name' : 'TITLE', 'content' : 'Please verify your email address to receive updates from this event.' }, { 'name' : 'MESSAGE', 'content' : 'Hi ' + event.creator.name + ',

' + 'If you would like to receive email updates from this event, please click on the button below to verify your email address.' }, { 'name' : 'BUTTONTEXT', 'content' : 'Verify Email Address' }, { 'name' : 'BUTTONLINK', 'content' : app.get('absoluteUrl')('verify/'+event._id+'/code/'+event.__private.verificationCode) }] } mandrill_client.messages.sendTemplate({ message : message, template_name : 'rallly-standard', async : true, template_content : [] }, mandrillSuccessHandler, mandrillErrorHandler); } var sendUpdate = function(event){ var message = { subject : "Rallly: " + event.title + " - Verify Email Address", from_email : 'noreply@rallly.co', from_name : 'Rallly', to: [{ 'email': event.creator.email }], global_merge_vars : [{ 'name' : 'Name', 'content' : event.creator.name }, { 'name' : 'Event', 'content' : event.title }, { 'name' : 'VerifyUrl', 'content' : app.get('absoluteUrl')('verify/'+event._id+'/code/'+event.creator.verificationCode) }] } mandrill_client.messages.sendTemplate({ message : message, template_name : 'rallly-standard', async : true, template_content : [] }, mandrillSuccessHandler, mandrillErrorHandler); } var deleteConfirmation = function(event){ var message = { subject : "Rallly: " + event.title + " - Delete Request", from_email : 'noreply@rallly.co', from_name : 'Rallly', to: [{ 'email': event.creator.email }], global_merge_vars : [{ 'name' : 'TITLE', 'content' : 'Are you sure you want to delete ' + event.title + '?' }, { 'name' : 'MESSAGE', 'content' : 'Hi ' + event.creator.name + ',

' + 'A request has been made to delete this event. If you would like to delete it click the button below. If you did not make this request, please ignore this email.' }, { 'name' : 'BUTTONTEXT', 'content' : 'Delete Event' }, { 'name' : 'BUTTONLINK', 'content' : app.get('absoluteUrl')('delete/'+event._id+'/code/'+event.__private.deleteCode) }] } mandrill_client.messages.sendTemplate({ message : message, template_name : 'rallly-standard', async : true, template_content : [] }, mandrillSuccessHandler, mandrillErrorHandler); } var mandrillSuccessHandler = function(result){ if (result.length == 1) { debug('Email sent to ' + result[0].email); } else { debug('Email sent to ' + result.length + ' recipients'); } } var mandrillErrorHandler = function(e){ debug('A mandrill error occurred: ' + e.name + ' - ' + e.message); }