mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-05-04 09:53:55 -04: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
server
|
@ -48,3 +48,24 @@ module.exports =
|
||||||
else if leads.data?.length > 1
|
else if leads.data?.length > 1
|
||||||
return done('ERROR: multiple leads returned for ' + email + ' ' + leads.data.length)
|
return done('ERROR: multiple leads returned for ' + email + ' ' + leads.data.length)
|
||||||
return done()
|
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'
|
log = require 'winston'
|
||||||
mongoose = require 'mongoose'
|
mongoose = require 'mongoose'
|
||||||
config = require '../../server_config'
|
config = require '../../server_config'
|
||||||
|
|
|
@ -5,11 +5,12 @@ sendwithus = require '../sendwithus'
|
||||||
async = require 'async'
|
async = require 'async'
|
||||||
LevelSession = require '../models/LevelSession'
|
LevelSession = require '../models/LevelSession'
|
||||||
moment = require 'moment'
|
moment = require 'moment'
|
||||||
|
closeIO = require '../lib/closeIO'
|
||||||
|
|
||||||
module.exports.setup = (app) ->
|
module.exports.setup = (app) ->
|
||||||
app.post '/contact', (req, res) ->
|
app.post '/contact', (req, res) ->
|
||||||
return res.end() unless req.user
|
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) ->
|
createMailContext req, (context) ->
|
||||||
sendwithus.api.send context, (err, result) ->
|
sendwithus.api.send context, (err, result) ->
|
||||||
if err
|
if err
|
||||||
|
@ -32,30 +33,35 @@ createMailContext = (req, done) ->
|
||||||
#{message}
|
#{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
|
if req.body.browser
|
||||||
content += "\n#{req.body.browser} - #{req.body.screenSize}"
|
content += "\n#{req.body.browser} - #{req.body.screenSize}"
|
||||||
|
|
||||||
address = switch
|
toAddress = switch
|
||||||
when teacher then config.mail.supportSchools
|
|
||||||
when premium then config.mail.supportPremium
|
when premium then config.mail.supportPremium
|
||||||
else config.mail.supportPrimary
|
else config.mail.supportPrimary
|
||||||
|
fromAddress = sender or user.get('email')
|
||||||
|
|
||||||
context =
|
context =
|
||||||
email_id: sendwithus.templates.plain_text_email
|
email_id: sendwithus.templates.plain_text_email
|
||||||
recipient:
|
recipient:
|
||||||
address: address
|
address: toAddress
|
||||||
sender:
|
sender:
|
||||||
address: config.mail.username
|
address: config.mail.username
|
||||||
reply_to: sender or user.get('email')
|
reply_to: fromAddress
|
||||||
name: user.get('name')
|
name: user.get('name')
|
||||||
email_data:
|
email_data:
|
||||||
subject: "[CodeCombat] #{subject ? ('Feedback - ' + (sender or user.get('email')))}"
|
subject: "[CodeCombat] #{subject ? ('Feedback - ' + fromAddress)}"
|
||||||
content: content
|
content: content
|
||||||
if recipientID is 'schools@codecombat.com'
|
if recipientID is 'schools@codecombat.com' or teacher
|
||||||
context.recipient.address = 'schools@codecombat.com'
|
req.user.update({$set: { enrollmentRequestSent: true }}).exec(_.noop) if recipientID is 'schools@codecombat.com'
|
||||||
req.user.update({$set: { enrollmentRequestSent: true }}).exec(_.noop)
|
closeIO.getSalesContactEmail fromAddress, (err, salesContactEmail) ->
|
||||||
done context
|
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') ? [])))
|
else if recipientID and (user.isAdmin() or ('employer' in (user.get('permissions') ? [])))
|
||||||
User.findById(recipientID, 'email').exec (err, document) ->
|
User.findById(recipientID, 'email').exec (err, document) ->
|
||||||
if err
|
if err
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue