mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-02-17 08:50:58 -05:00
Add POST /db/classroom/:id/invite-members
This commit is contained in:
parent
0e2305bc3d
commit
aafdce6fbe
2 changed files with 38 additions and 0 deletions
|
@ -3,6 +3,7 @@ mongoose = require 'mongoose'
|
|||
Handler = require '../commons/Handler'
|
||||
Classroom = require './Classroom'
|
||||
User = require '../users/User'
|
||||
sendwithus = require '../sendwithus'
|
||||
|
||||
ClassroomHandler = class ClassroomHandler extends Handler
|
||||
modelClass: Classroom
|
||||
|
@ -31,6 +32,7 @@ ClassroomHandler = class ClassroomHandler extends Handler
|
|||
|
||||
getByRelationship: (req, res, args...) ->
|
||||
method = req.method.toLowerCase()
|
||||
return @inviteStudents(req, res, args[0]) if args[1] is 'invite-members'
|
||||
return @joinClassroomAPI(req, res, args[0]) if method is 'post' and args[1] is 'members'
|
||||
super(arguments...)
|
||||
|
||||
|
@ -54,5 +56,27 @@ ClassroomHandler = class ClassroomHandler extends Handler
|
|||
return doc.toObject()
|
||||
return _.omit(doc.toObject(), 'code')
|
||||
|
||||
inviteStudents: (req, res, classroomID) ->
|
||||
if not req.body.emails
|
||||
return @sendBadInputError(res, 'Emails not included')
|
||||
|
||||
Classroom.findById classroomID, (err, classroom) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
return @sendNotFoundError(res) unless classroom
|
||||
return @sendForbiddenError(res) unless classroom.get('ownerID').equals(req.user.get('_id'))
|
||||
|
||||
for email in req.body.emails
|
||||
context =
|
||||
email_id: sendwithus.templates.course_invite_email
|
||||
recipient:
|
||||
address: email
|
||||
subject: classroom.get('name')
|
||||
email_data:
|
||||
class_name: classroom.get('name')
|
||||
# TODO: join_link
|
||||
# join_link: "https://codecombat.com/courses/students?_ppc=" + prepaid.get('code')
|
||||
sendwithus.api.send context, _.noop
|
||||
return @sendSuccess(res, {})
|
||||
|
||||
|
||||
module.exports = new ClassroomHandler()
|
||||
|
|
|
@ -96,3 +96,17 @@ describe 'POST /db/classrooms/:id/members', ->
|
|||
request.post { uri: url, json: data }, (err, res, body) ->
|
||||
expect(res.statusCode).toBe(200)
|
||||
done()
|
||||
|
||||
|
||||
describe 'POST /db/classrooms/:id/invite-members', ->
|
||||
|
||||
it 'takes a list of emails and sends invites', (done) ->
|
||||
loginNewUser (user1) ->
|
||||
data = { name: 'Classroom 6' }
|
||||
request.post {uri: classroomsURL, json: data }, (err, res, body) ->
|
||||
expect(res.statusCode).toBe(200)
|
||||
url = classroomsURL + '/' + body._id + '/invite-members'
|
||||
data = { emails: ['test@test.com'] }
|
||||
request.post { uri: url, json: data }, (err, res, body) ->
|
||||
expect(res.statusCode).toBe(200)
|
||||
done()
|
||||
|
|
Loading…
Reference in a new issue