mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-02-17 08:50:58 -05:00
Send request licenses emails to Close.io sales contact
This commit is contained in:
parent
106057b99d
commit
6246ac0955
3 changed files with 38 additions and 12 deletions
|
@ -48,3 +48,24 @@ module.exports =
|
|||
else if leads.data?.length > 1
|
||||
return done('ERROR: multiple leads returned for ' + email + ' ' + leads.data.length)
|
||||
return done()
|
||||
|
||||
getSalesContactEmail: (email, done) ->
|
||||
try
|
||||
# NOTE: does not work on + email addresses due to Close.io API bug
|
||||
uri = "https://#{apiKey}:X@app.close.io/api/v1/lead/?query=email_address:#{email}"
|
||||
request.get uri, (error, response, body) =>
|
||||
return done(error) if error
|
||||
leads = JSON.parse(body)
|
||||
return done("Unexpected leads format: " + body) unless leads.data?
|
||||
return done(null, config.mail.supportSchools) unless leads.data?.length > 0
|
||||
lead = leads.data[0]
|
||||
uri = "https://#{apiKey}:X@app.close.io/api/v1/activity/?lead_id=#{lead.id}"
|
||||
request.get uri, (error, response, body) =>
|
||||
return done(error) if error
|
||||
activities = JSON.parse(body)
|
||||
return done("Unexpected activities format: " + body) unless activities.data?
|
||||
for activity in activities.data when activity._type is 'Email'
|
||||
return done(null, activity.sender) if /@codecombat\.com/ig.test(activity.sender)
|
||||
return done(null, config.mail.supportSchools)
|
||||
catch error
|
||||
return done(error, config.mail.supportSchools)
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
closeIO = require '../lib/closeIO'
|
||||
log = require 'winston'
|
||||
mongoose = require 'mongoose'
|
||||
config = require '../../server_config'
|
||||
|
|
|
@ -5,11 +5,12 @@ sendwithus = require '../sendwithus'
|
|||
async = require 'async'
|
||||
LevelSession = require '../models/LevelSession'
|
||||
moment = require 'moment'
|
||||
closeIO = require '../lib/closeIO'
|
||||
|
||||
module.exports.setup = (app) ->
|
||||
app.post '/contact', (req, res) ->
|
||||
return res.end() unless req.user
|
||||
#log.info "Sending mail from #{req.body.email} saying #{req.body.message}"
|
||||
# log.info "Sending mail from #{req.body.email} saying #{req.body.message}"
|
||||
createMailContext req, (context) ->
|
||||
sendwithus.api.send context, (err, result) ->
|
||||
if err
|
||||
|
@ -32,30 +33,35 @@ createMailContext = (req, done) ->
|
|||
#{message}
|
||||
|
||||
--
|
||||
<a href='http://codecombat.com/user/#{user.get('slug') or user.get('_id')}'>#{user.get('name') or 'Anonymous'}</a> - Level #{level}#{if teacher then ' - Teacher' else ''}#{if premium then ' - Subscriber' else ''}#{if country then ' - ' + country else ''}
|
||||
http://codecombat.com/user/#{user.get('slug') or user.get('_id')}
|
||||
#{user.get('name') or 'Anonymous'} - Level #{level}#{if teacher then ' - Teacher' else ''}#{if premium then ' - Subscriber' else ''}#{if country then ' - ' + country else ''}
|
||||
"""
|
||||
if req.body.browser
|
||||
content += "\n#{req.body.browser} - #{req.body.screenSize}"
|
||||
|
||||
address = switch
|
||||
when teacher then config.mail.supportSchools
|
||||
toAddress = switch
|
||||
when premium then config.mail.supportPremium
|
||||
else config.mail.supportPrimary
|
||||
fromAddress = sender or user.get('email')
|
||||
|
||||
context =
|
||||
email_id: sendwithus.templates.plain_text_email
|
||||
recipient:
|
||||
address: address
|
||||
address: toAddress
|
||||
sender:
|
||||
address: config.mail.username
|
||||
reply_to: sender or user.get('email')
|
||||
reply_to: fromAddress
|
||||
name: user.get('name')
|
||||
email_data:
|
||||
subject: "[CodeCombat] #{subject ? ('Feedback - ' + (sender or user.get('email')))}"
|
||||
subject: "[CodeCombat] #{subject ? ('Feedback - ' + fromAddress)}"
|
||||
content: content
|
||||
if recipientID is 'schools@codecombat.com'
|
||||
context.recipient.address = 'schools@codecombat.com'
|
||||
req.user.update({$set: { enrollmentRequestSent: true }}).exec(_.noop)
|
||||
done context
|
||||
if recipientID is 'schools@codecombat.com' or teacher
|
||||
req.user.update({$set: { enrollmentRequestSent: true }}).exec(_.noop) if recipientID is 'schools@codecombat.com'
|
||||
closeIO.getSalesContactEmail fromAddress, (err, salesContactEmail) ->
|
||||
console.error "Error getting sales contact for #{sender}: #{err}" if err
|
||||
context.recipient.address = salesContactEmail ? config.mail.supportSchools
|
||||
context.sender.address = fromAddress
|
||||
done context
|
||||
else if recipientID and (user.isAdmin() or ('employer' in (user.get('permissions') ? [])))
|
||||
User.findById(recipientID, 'email').exec (err, document) ->
|
||||
if err
|
||||
|
|
Loading…
Reference in a new issue