Add user.courseInstances, use it for course ladders

This commit is contained in:
Nick Winter 2015-11-19 10:41:31 -08:00
parent bc1b11df94
commit c8ceca4d3d
5 changed files with 9 additions and 8 deletions
app
schemas/models
templates/play/ladder
views/play/modal
server

View file

@ -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({})

View file

@ -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'

View file

@ -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()

View file

@ -87,6 +87,8 @@ CourseInstanceHandler = class CourseInstanceHandler extends Handler
members.push(userID)
courseInstance.set('members', members)
courseInstance.save (err, courseInstance) =>
return @sendDatabaseError(res, err) if err
User.update {_id: mongoose.Types.ObjectId(userID)}, {$addToSet: {courseInstances: courseInstance.get('_id')}}, (err) =>
return @sendDatabaseError(res, err) if err
@sendSuccess(res, @formatEntity(req, courseInstance))

View file

@ -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