var express = require('express'); var app = express(); var runModel = require('../models/runModel'); var publicationModel = require('../models/publicationModel'); var userModel = require('../models/userModel'); //var trainerModel = require('../models/trainerModel'); var crypto = require('crypto'); /**POST '/publications' **/ exports.postRun = function (req, res) { userModel.findOne({'tokens.token': req.headers['x-access-token']}, function (err, user) { if (err) return res.send(500, err.message); if (!user) { res.json({success: false, message: 'user not found.'}); } else if (user) { //aquí ja hem agafat el user a partir del seu token var run = new runModel(req.body.newRun); run.user=user._id; //fins aquí tenim la variable publication amb els continguts //ara cal 1r guardar el model publication a la base de dades run.save(function (err, run) { if (err) return res.send(500, err.message); //i 2n, afegir la id de la publicació generada al user.publications user.runs.push(run._id); /* gamification */ var reward = { concept: "added new run to user", date: Date(), value: +1 }; user.points.history.push(reward); user.points.total = user.points.total + 1; /* end of gamification */ user.save(function (err, user) { if (err) return res.send(500, err.message); //res.status(200).jsonp(user); //ara farem una publicació ensenyant que ha fet aquest run var publication = new publicationModel({ title: "new run '" + run.title + "'!", content: "distance of: " + run.distance + ". View my runs at my profile", date: new Date(), user: user._id, photo: run.photo }); //fins aquí tenim la variable publication amb els continguts //ara cal 1r guardar el model publication a la base de dades publication.save(function (err, publication) { if (err) return res.send(500, err.message); //i 2n, afegir la id de la publicació generada al user.publications user.publications.push(publication._id); /* gamification */ var reward = { concept: "added new publication to Timeline", date: Date(), value: +1 }; user.points.history.push(reward); user.points.total = user.points.total + 1; /* end of gamification */ if(!user.totalkm) { user.totalkm=0; } user.totalkm=user.totalkm + run.distance; user.save(function (err, user) { if (err) return res.send(500, err.message); res.status(200).jsonp(user); }); }); }); }); }//end else if }); }; /**GET '/users/:userid/publications' **/ exports.getRunsByUserId = function (req, res) { userModel.findOne({ _id: req.params.userid }) .populate('runs') .exec(function (error, user) { if (error !== null) res.send(500, error.message); res.status(200).jsonp(user); }); }; /** GET '/run/getById/:publicationid' **/ exports.getRunByRunId = function (req, res) { runModel.findOne({_id: req.params.runid}) .lean() .populate('user', 'name avatar') .exec(function (err, run) { if (err) return res.send(500, err.message); if (!run) { res.json({success: false, message: 'run not found.'}); } else if (run) { res.status(200).jsonp(run); } }); };