hulawho
Version:
hulawho api
114 lines (92 loc) • 2.67 kB
JavaScript
var async = require('async')
var mongoose = require('mongoose')
var Game = require('./Game')
var PredictionModel = require('./models/schema').Prediction
var crypto = require('./modules/crypto_primitives')
function Prediction(profile) {
var self = this
if(profile) {
self.user = profile.user
self.game = profile.game
self.home_score = profile.home_score
self.away_score = profile.away_score
}
}
Prediction.prototype.addPrediction = function(callback) {
var self = this
var entry = {
user: self.user,
game: self.game,
home_score: self.home_score,
away_score: self.away_score
}
// check whether prediction for the same match by the same user already exists
PredictionModel.findOne({user: self.user, game: self.game}, function(err, res) {
if(err) {
callback(err)
return
}
if(res) {
// update prediction
PredictionModel.update({_id: res.id}, {home_score: self.home_score, away_score: self.away_score, date_updated: new Date()}, function(err) {
if(err) {
callback(err)
return
}
callback(null, {status: 250, message: 'UPDATE PREDICTION OK'})
})
return
}
var prediction = new PredictionModel(entry)
prediction.save(function(err, res) {
if(err) {
callback(err)
return
}
// push prediction to game collection
var game = new Game()
game.pushPrediction(self.game, res.id, function(err, res) {
if(err) {
callback(err)
return
}
callback(null, {status: 200, message: 'ADD PREDICTION OK'})
})
})
})
}
Prediction.prototype.pushAnalysis = function(prediction, analysis, callback) {
var self = this
self.id = prediction
PredictionModel.findOneAndUpdate({_id: self.id}, {analysis: analysis}, function(err, res) {
if(err) {
callback(err)
return
}
if(!res) {
callback({status: 428, message: 'PREDICTION NOT FOUND'})
return
}
callback(null, {status: 200, message: 'PREDICTION ANALYSIS PUSH OK'})
})
}
Prediction.prototype.getPrediction = function(prediction, callback) {
var self = this
self.id = prediction
PredictionModel.findOne({_id: self.id}, function(err, res) {
if(err) {
callback(err)
return
}
if(!res) {
callback({status: 400, message: 'PREDICTION DOES NOT EXIST'})
return
}
self.user = res.user
self.game = res.game
self.home_score = res.home_score
self.away_score = res.away_score
callback(null, {status: 200, message: 'GET PREDICTION OK', data: res})
})
}
module.exports = Prediction