codecombat/server/commons/notify.coffee

37 lines
1.6 KiB
CoffeeScript
Raw Normal View History

slack = require '../slack'
sendwithus = require '../sendwithus'
User = require '../models/User'
# TODO: Refactor notification (slack, watcher emails) logic here
module.exports =
notifyChangesMadeToDoc: (req, doc) ->
# TODO: Stop using headers to pass edit paths. Perhaps should be a method property for Mongoose models
editPath = req.headers['x-current-path']
docLink = "http://codecombat.com#{editPath}"
# Post a message on Slack
message = "#{req.user.get('name')} saved a change to #{doc.get('name')}: #{doc.get('commitMessage') or '(no commit message)'} #{docLink}"
slack.sendSlackMessage message, ['artisans']
# Send emails to watchers
watchers = doc.get('watchers') or []
# Don't send these emails to the person who submitted the patch, or to Nick, George, or Scott.
watchers = (w for w in watchers when not w.equals(req.user._id) and not (w.toHexString() in ['512ef4805a67a8c507000001', '5162fab9c92b4c751e000274', '51538fdb812dd9af02000001']))
if watchers.length
User.find({_id:{$in:watchers}}).select({email:1, name:1}).exec (err, watchers) ->
for watcher in watchers
continue if not watcher.get('email')
context =
email_id: sendwithus.templates.change_made_notify_watcher
recipient:
address: watcher.get('email')
name: watcher.get('name')
email_data:
doc_name: doc.get('name') or '???'
submitter_name: req.user.get('name') or '???'
doc_link: if editPath then docLink else null
commit_message: doc.get('commitMessage')
sendwithus.api.send context, _.noop