hulawho
Version:
hulawho api
206 lines (162 loc) • 3.95 kB
JavaScript
var async = require('async')
var mongoose = require('mongoose')
var GameModel = require('./models/schema').Game
var crypto = require('./modules/crypto_primitives')
function Game(profile) {
var self = this
if(profile) {
self.home_team = profile.home_team
self.away_team = profile.away_team
self.date = profile.date
if(profile.tournament) {
self.tournament = profile.tournament
}
if(profile.round) {
self.round = profile.round
}
if(profile.cluster) {
self.cluster = profile.cluster
}
if(profile.leg) {
self.leg = profile.leg
}
}
}
Game.prototype.addGame = function(callback) {
var self = this
var entry = {
home_team: self.home_team,
away_team: self.away_team,
date: self.date
}
if(self.tournament) {
entry.tournament = self.tournament
}
if(self.round) {
entry.round = self.round
}
if(self.cluster) {
entry.cluster = self.cluster
}
if(self.leg) {
entry.leg = self.leg
}
GameModel.findOne({home_team: self.home_team, away_team: self.away_team, date: self.date}, function(err, res) {
if(err) {
callback(err)
return
}
if(res) {
callback({status: 400, message: 'GAME EXISTS'})
return
}
var game = new GameModel(entry)
game.save(function(err, res) {
if(err) {
callback(err)
return
}
callback(null, {status: 200, message: 'ADD GAME OK'})
})
})
}
Game.prototype.getGame = function(game, callback) {
var self = this
self.id = game
GameModel.findOne({_id: self.id}, function(err, res) {
if(err) {
callback(err)
return
}
if(!res) {
callback({status: 400, message: 'GAME DOES NOT EXIST'})
return
}
self.home_team = res.home_team
self.away_team = res.away_team
self.date = res.date
if(res.tournament) {
self.tournament = res.tournament
}
if(res.round) {
self.round = res.round
}
if(res.cluster) {
self.cluster = res.cluster
}
if(res.leg) {
self.leg = res.leg
}
callback(null, {status: 200, message: 'GET GAME OK', data: res})
})
}
Game.prototype.pushPrediction = function(game, prediction, callback) {
var self = this
self.id = game
GameModel.findOneAndUpdate({_id: self.id}, {$push: {predictions: prediction}}, function(err, res) {
if(err) {
callback(err)
return
}
if(!res) {
callback({status: 428, message: 'GAME NOT FOUND'})
return
}
callback(null, {status: 200, message: 'GAME PREDICTION PUSH OK'})
})
}
Game.prototype.pushResult = function(game, result, callback) {
var self = this
self.id = game
GameModel.findOneAndUpdate({_id: self.id}, {result: result}, function(err, res) {
if(err) {
callback(err)
return
}
if(!res) {
callback({status: 428, message: 'GAME NOT FOUND'})
return
}
callback(null, {status: 200, message: 'GAME RESULT PUSH OK'})
})
}
Game.prototype.getGames = function(query, callback) {
var self = this
if(typeof query === 'function'){
callback = query
query = {}
}
GameModel.find(query).populate({
path: 'predictions',
populate: {
path: 'analysis'
}
}).populate('result').exec(function(err, res) {
if(err) {
callback(err)
return
}
callback(null, {status: 200, message: 'GET GAMES OK', data: res})
})
}
Game.prototype.getUserGames = function(user, query, callback) {
var self = this
if(typeof query === 'function'){
callback = query
query = {}
}
GameModel.find(query).populate({
path: 'predictions',
match: {user: user},
populate: {
path: 'analysis'
}
}).populate('result').exec(function(err, res) {
if(err) {
callback(err)
return
}
callback(null, {status: 200, message: 'GET USER GAMES OK', data: res})
})
}
module.exports = Game