var express = require('express'); var app = express(); var publicationModel = require('../models/publicationModel'); var userModel = require('../models/userModel'); //var trainerModel = require('../models/trainerModel'); var crypto = require('crypto'); /**GET '/publications' **/ exports.getAllPublications = function (req, res) { publicationModel.find() .limit(Number(req.query.pageSize)) .skip(Number(req.query.pageSize)*Number(req.query.page)) .lean() .populate('user', 'name avatar') .exec(function (err, publications) { if (err) return res.send(500, err.message); if (!publications) { // } else if (publications) { res.status(200).jsonp(publications); } }); }; /** GET '/publications/getById/:publicationid' **/ exports.getPublicationById = function (req, res) { publicationModel.findOne({_id: req.params.publicationid}) .lean() .populate('likes', 'name avatar') .exec(function (err, publication) { if (err) return res.send(500, err.message); if (!publication) { res.json({success: false, message: 'publication not found.'}); } else if (publication) { res.status(200).jsonp(publication); } }); }; /**POST '/publications' **/ exports.postPublication = 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 publication = new publicationModel({ title: req.body.title, content: req.body.content, date: new Date(), user: user._id, photo: req.body.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 */ 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.getUserPublicationsByUserId = function (req, res) { userModel.findOne({_id: req.params.userid}, function (err, user) { if (err) return res.send(500, err.message); }).populate('publications') .exec(function (error, user) { if (error !== null) res.send(500, error.message); console.log(JSON.stringify(user, null, "\t")); res.status(200).jsonp(user.publications); }); }; /**DELETE '/publications/:publicationid' **/ exports.deletePublicationById = 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) { for (var i = 0; i < user.publications.length; i++) { if (user.publications[i].equals(req.params.publicationid)) {//només si el user és qui ha fet la publication la pot esborrar user.publications.splice(i, 1); user.save(function (err, user) {//guardem l'user if (err) return res.send(500, err.message); publicationModel.findByIdAndRemove({_id: req.params.publicationid}, function (err) { if (err !== null) return res.send(500, err.message); res.status(200).jsonp('Deleted'); }); }); } } } }); }; /** POST '/publications/:publicationid/like' **/ exports.likePublication = 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) { console.log(user.name); //ara busquem el userB publicationModel.findOne({_id: req.params.publicationid}, function (err, publication) { if (err) return res.send(500, err.message); if (!publication) { res.json({success: false, message: 'publication not found.'}); } else if (publication) { // for(var i=0; i