UNPKG

hulawho

Version:
206 lines (162 loc) 3.95 kB
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