Fixed random sessions fetching

This commit is contained in:
Michael Schmatz 2014-03-14 12:54:52 -07:00
parent 39ed6c3a43
commit 075ea23be9
2 changed files with 52 additions and 38 deletions
app/views/play
server/levels

View file

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

View file

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