mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-03-29 14:19:48 -04:00
Fixed random sessions fetching
This commit is contained in:
parent
39ed6c3a43
commit
075ea23be9
2 changed files with 52 additions and 38 deletions
|
@ -68,17 +68,19 @@ module.exports = class SpectateLevelView extends View
|
|||
@originalOptions = _.cloneDeep(options)
|
||||
console.profile?() if PROFILE_ME
|
||||
super options
|
||||
if options.spectateSessions?
|
||||
@sessionOne = options.spectateSessions.sessionOne
|
||||
@sessionTwo = options.spectateSessions.sessionTwo
|
||||
else
|
||||
@sessionOne = @getQueryVariable 'session-one'
|
||||
@sessionTwo = @getQueryVariable 'session-two'
|
||||
|
||||
$(window).on('resize', @onWindowResize)
|
||||
@supermodel.once 'error', @onLevelLoadError
|
||||
|
||||
@load()
|
||||
|
||||
@sessionOne = @getQueryVariable 'session-one'
|
||||
@sessionTwo = @getQueryVariable 'session-two'
|
||||
if not @sessionOne or not @sessionTwo
|
||||
@fetchRandomSessionPair (err, data) =>
|
||||
if err? then return console.log "There was an error fetching the random session pair: #{data}"
|
||||
@sessionOne = data[0]._id
|
||||
@sessionTwo = data[1]._id
|
||||
@load()
|
||||
else
|
||||
@load()
|
||||
|
||||
onLevelLoadError: (e) =>
|
||||
application.router.navigate "/play?not_found=#{@levelID}", {trigger: true}
|
||||
|
@ -436,7 +438,7 @@ module.exports = class SpectateLevelView extends View
|
|||
|
||||
fetchRandomSessionPair: (cb) ->
|
||||
console.log "Fetching random session pair!"
|
||||
randomSessionPairURL = "/db/level/#{@level.get('original')}.#{@level.get('version').major}/random_session_pair"
|
||||
randomSessionPairURL = "/db/level/#{@levelID}/random_session_pair"
|
||||
$.ajax
|
||||
url: randomSessionPairURL
|
||||
type: "GET"
|
||||
|
|
|
@ -150,39 +150,51 @@ LevelHandler = class LevelHandler extends Handler
|
|||
resultSessions ?= []
|
||||
@sendSuccess res, resultSessions
|
||||
|
||||
getRandomSessionPair: (req, res, id) ->
|
||||
getRandomSessionPair: (req, res, slugOrID) ->
|
||||
findParameters = {}
|
||||
|
||||
[original,version] = id.split '.'
|
||||
version = parseInt(version) ? 0
|
||||
if Handler.isID slugOrID
|
||||
findParameters["_id"] = slugOrID
|
||||
else
|
||||
findParameters["slug"] = slugOrID
|
||||
selectString = 'original version'
|
||||
query = Level.findOne(findParameters)
|
||||
.select(selectString)
|
||||
.lean()
|
||||
|
||||
sessionsQueryParameters =
|
||||
level:
|
||||
original: original
|
||||
majorVersion: version
|
||||
submitted:true
|
||||
|
||||
|
||||
query = Session
|
||||
.find(sessionsQueryParameters)
|
||||
.select('team')
|
||||
.lean()
|
||||
|
||||
query.exec (err, resultSessions) =>
|
||||
return @sendDatabaseError res, err if err? or not resultSessions
|
||||
|
||||
teamSessions = _.groupBy resultSessions, 'team'
|
||||
sessions = []
|
||||
numberOfTeams = 0
|
||||
for team of teamSessions
|
||||
numberOfTeams += 1
|
||||
sessions.push _.sample(teamSessions[team])
|
||||
if numberOfTeams != 2 then return @sendDatabaseError res, "There aren't sessions of 2 teams, so cannot choose random opponents!"
|
||||
query.exec (err, level) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
return @sendNotFoundError(res) unless level?
|
||||
|
||||
sessionsQueryParameters =
|
||||
level:
|
||||
original: level.original.toString()
|
||||
majorVersion: level.version.major
|
||||
submitted:true
|
||||
|
||||
console.log sessionsQueryParameters
|
||||
|
||||
@sendSuccess res, sessions
|
||||
|
||||
query = Session
|
||||
.find(sessionsQueryParameters)
|
||||
.select('team')
|
||||
.lean()
|
||||
|
||||
query.exec (err, resultSessions) =>
|
||||
return @sendDatabaseError res, err if err? or not resultSessions
|
||||
|
||||
teamSessions = _.groupBy resultSessions, 'team'
|
||||
console.log teamSessions
|
||||
sessions = []
|
||||
numberOfTeams = 0
|
||||
for team of teamSessions
|
||||
numberOfTeams += 1
|
||||
sessions.push _.sample(teamSessions[team])
|
||||
if numberOfTeams != 2 then return @sendDatabaseError res, "There aren't sessions of 2 teams, so cannot choose random opponents!"
|
||||
|
||||
@sendSuccess res, sessions
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
validateLeaderboardRequestParameters: (req) ->
|
||||
|
|
Loading…
Add table
Reference in a new issue