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
app
schemas/models
templates/play/ladder
views/play/modal
server
|
@ -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
|
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()
|
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
|
currentCourse: c.object {}, { # Old, can be removed after we deploy and delete it from all users
|
||||||
courseID: c.objectId({})
|
courseID: c.objectId({})
|
||||||
courseInstanceID: c.objectId({})
|
courseInstanceID: c.objectId({})
|
||||||
|
|
|
@ -26,7 +26,7 @@ block content
|
||||||
|
|
||||||
if leagueType === 'clan'
|
if leagueType === 'clan'
|
||||||
h1.league-header
|
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
|
span.spl(data-i18n="ladder.league") League
|
||||||
|
|
||||||
if level.get('name') == 'Greed'
|
if level.get('name') == 'Greed'
|
||||||
|
|
|
@ -73,10 +73,8 @@ module.exports = class PlayAchievementsModal extends ModalView
|
||||||
@onEverythingLoaded()
|
@onEverythingLoaded()
|
||||||
|
|
||||||
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))
|
@achievements.set(@achievements.filter((m) -> m.get('collection') isnt 'level.sessions' or m.get('query')?.team))
|
||||||
for achievement in @achievements.models
|
for achievement in @achievements.models
|
||||||
console.log 'kept achievement', achievement.attributes
|
|
||||||
if earned = @earnedMap[achievement.id]
|
if earned = @earnedMap[achievement.id]
|
||||||
achievement.earned = earned
|
achievement.earned = earned
|
||||||
achievement.earnedDate = earned.getCreationDate()
|
achievement.earnedDate = earned.getCreationDate()
|
||||||
|
|
|
@ -60,7 +60,7 @@ CourseInstanceHandler = class CourseInstanceHandler extends Handler
|
||||||
courseInstance.save (err, courseInstance) =>
|
courseInstance.save (err, courseInstance) =>
|
||||||
return @sendDatabaseError(res, err) if err
|
return @sendDatabaseError(res, err) if err
|
||||||
@sendCreated(res, courseInstance)
|
@sendCreated(res, courseInstance)
|
||||||
|
|
||||||
addMember: (req, res, courseInstanceID) ->
|
addMember: (req, res, courseInstanceID) ->
|
||||||
userID = req.body.userID
|
userID = req.body.userID
|
||||||
return @sendBadInputError(res, 'Input must be a MongoDB ID') unless utils.isID(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.set('members', members)
|
||||||
courseInstance.save (err, courseInstance) =>
|
courseInstance.save (err, courseInstance) =>
|
||||||
return @sendDatabaseError(res, err) if err
|
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) ->
|
post: (req, res) ->
|
||||||
return @sendBadInputError(res, 'No classroomID') unless req.body.classroomID
|
return @sendBadInputError(res, 'No classroomID') unless req.body.classroomID
|
||||||
return @sendBadInputError(res, 'No courseID') unless req.body.courseID
|
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 @sendDatabaseError(res, err) if err
|
||||||
return @sendNotFoundError(res, 'Course not found') unless course
|
return @sendNotFoundError(res, 'Course not found') unless course
|
||||||
super(req, res)
|
super(req, res)
|
||||||
|
|
||||||
makeNewInstance: (req) ->
|
makeNewInstance: (req) ->
|
||||||
doc = new CourseInstance({
|
doc = new CourseInstance({
|
||||||
members: []
|
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.
|
# 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.
|
# 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 = 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.
|
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
|
return sampleByLevel callback unless leagueIDs.length and Math.random() > 1 / leagueIDs.length
|
||||||
leagueID = _.sample leagueIDs
|
leagueID = _.sample leagueIDs
|
||||||
|
|
Reference in a new issue