mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-02-17 08:50:58 -05:00
Add user.courseInstances, use it for course ladders
This commit is contained in:
parent
bc1b11df94
commit
c8ceca4d3d
5 changed files with 9 additions and 8 deletions
|
@ -316,6 +316,7 @@ _.extend UserSchema.properties,
|
|||
country: { type: 'string', enum: ['brazil', 'china'] } # New, supports multiple countries for different versions--only set for specific countries where we have premium servers right now
|
||||
|
||||
clans: c.array {}, c.objectId()
|
||||
courseInstances: c.array {}, c.objectId()
|
||||
currentCourse: c.object {}, { # Old, can be removed after we deploy and delete it from all users
|
||||
courseID: c.objectId({})
|
||||
courseInstanceID: c.objectId({})
|
||||
|
|
|
@ -26,7 +26,7 @@ block content
|
|||
|
||||
if leagueType === 'clan'
|
||||
h1.league-header
|
||||
a(href="/#{leagueType == 'clan' ? 'clans' : leagueType}/#{league.id}")= league.get('name')
|
||||
a(href="/clans/#{league.id}")= league.get('name')
|
||||
span.spl(data-i18n="ladder.league") League
|
||||
|
||||
if level.get('name') == 'Greed'
|
||||
|
|
|
@ -73,10 +73,8 @@ module.exports = class PlayAchievementsModal extends ModalView
|
|||
@onEverythingLoaded()
|
||||
|
||||
onEverythingLoaded: =>
|
||||
console.log 'got achievements', m.attributes for m in @achievements.models
|
||||
@achievements.set(@achievements.filter((m) -> m.get('collection') isnt 'level.sessions' or m.get('query')?.team))
|
||||
for achievement in @achievements.models
|
||||
console.log 'kept achievement', achievement.attributes
|
||||
if earned = @earnedMap[achievement.id]
|
||||
achievement.earned = earned
|
||||
achievement.earnedDate = earned.getCreationDate()
|
||||
|
|
|
@ -60,7 +60,7 @@ CourseInstanceHandler = class CourseInstanceHandler extends Handler
|
|||
courseInstance.save (err, courseInstance) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
@sendCreated(res, courseInstance)
|
||||
|
||||
|
||||
addMember: (req, res, courseInstanceID) ->
|
||||
userID = req.body.userID
|
||||
return @sendBadInputError(res, 'Input must be a MongoDB ID') unless utils.isID(userID)
|
||||
|
@ -88,8 +88,10 @@ CourseInstanceHandler = class CourseInstanceHandler extends Handler
|
|||
courseInstance.set('members', members)
|
||||
courseInstance.save (err, courseInstance) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
@sendSuccess(res, @formatEntity(req, courseInstance))
|
||||
|
||||
User.update {_id: mongoose.Types.ObjectId(userID)}, {$addToSet: {courseInstances: courseInstance.get('_id')}}, (err) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
@sendSuccess(res, @formatEntity(req, courseInstance))
|
||||
|
||||
post: (req, res) ->
|
||||
return @sendBadInputError(res, 'No classroomID') unless req.body.classroomID
|
||||
return @sendBadInputError(res, 'No courseID') unless req.body.courseID
|
||||
|
@ -101,7 +103,7 @@ CourseInstanceHandler = class CourseInstanceHandler extends Handler
|
|||
return @sendDatabaseError(res, err) if err
|
||||
return @sendNotFoundError(res, 'Course not found') unless course
|
||||
super(req, res)
|
||||
|
||||
|
||||
makeNewInstance: (req) ->
|
||||
doc = new CourseInstance({
|
||||
members: []
|
||||
|
|
|
@ -38,7 +38,7 @@ getRandomSessions = (user, callback) ->
|
|||
# Only people in a league will end up simulating internal league matches (for leagues they're in) except by dumb chance.
|
||||
# If we don't like that, we can rework sampleByLevel to have an opportunity to switch to internal leagues if the first session had a league affiliation.
|
||||
leagueIDs = user?.get('clans') or []
|
||||
#leagueIDs = leagueIDs.concat user?.get('courseInstances') or []
|
||||
leagueIDs = leagueIDs.concat user?.get('courseInstances') or []
|
||||
leagueIDs = (leagueID + '' for leagueID in leagueIDs) # Make sure to fetch them as strings.
|
||||
return sampleByLevel callback unless leagueIDs.length and Math.random() > 1 / leagueIDs.length
|
||||
leagueID = _.sample leagueIDs
|
||||
|
|
Loading…
Reference in a new issue