arnaucube
arnaucube/commonroutesServerPublic Self-hosted repository
joins system done inside the travel model (with join and unjoin implemented
idoctnef idoctnef@openmailbox.org
Thu, 06 Oct 2016 15:12:08 +0200
commit

a51b917484bebc29bc513479ac8b51c40756eb4f

parent

747b52cdcfed118b7e81ccefecd97ed19019f1ff

M README.md → README.md

@@ -15,6 +15,7 @@ ##To Do List:

**Backend and Frontend:** ``` -signup user --> done +-signup unique username --> done -loggin user --> done -update user profile --> done -create new travel --> done
M config.js → config.js

@@ -1,9 +1,8 @@

module.exports = { - - /*'secret': process.env.SECRET, + /*'secret': process.env.SECRET,// production version 'database': process.env.MONGO_DSN,*/ - 'secret': process.env.SECRET, - 'database': process.env.MONGO_DSN, + 'secret': 'secretfortoken',// local version + 'database': 'mongodb://localhost/comunalcar', "port" : process.env.PORT || 3000 };
M controllers/travelController.js → controllers/travelController.js

@@ -107,22 +107,25 @@

/* join */ exports.addJoin = function(req, res) { - var join = new joinModel({ - travelId: req.params.travelId, - joinedUserId: req.body.joinedUserId, - joinedUsername: req.body.joinedUsername, - acceptedUserId: req.body.acceptedUserId, - joinedAvatar: req.body.joinedAvatar - }); + travelModel.findById(req.params.travelId, function(err, travel){ + console.log(travel.title); + var join = { + joinedUserId: req.body.joinedUserId, + joinedUsername: req.body.joinedUsername, + acceptedUserId: req.body.acceptedUserId, + joinedAvatar: req.body.joinedAvatar + }; + travel.joins.push(join); - join.save(function(err, join) { - if(err) return res.send(500, err.message); - res.status(200).jsonp(join); + travel.save(function(err, travel) { + if(err) return res.send(500, err.message); + res.status(200).jsonp(travel); + }); }); }; exports.doUnjoin = function(req, res) { - joinModel.find({ + /*joinModel.find({ travelId: req.params.travelId }, function(err, joins) { for(var i=0; i<joins.length; i++)

@@ -137,6 +140,20 @@ })

} } + });*/ + travelModel.findById(req.params.travelId, function(err, travel){ + for(var i=0; i<travel.joins.length; i++) + { + if(travel.joins[i].joinedUsername==req.body.joinedUsername) + { + travel.joins.splice(i, 1); + } + } + + travel.save(function(err, travel) { + if(err) return res.send(500, err.message); + res.status(200).jsonp(travel); + }); }); };
M models/travelModel.js → models/travelModel.js

@@ -17,7 +17,19 @@ icon: { type: String },

phone: { type: Number }, telegram: { type: String }, collectivized: { type: Boolean }, - modality: { type: String } //if is an offering travel or asking for travel + modality: { type: String }, //if is an offering travel or asking for travel + joins: [{ + joinedUserId: { type: String }, + joinedUsername: { type: String }, + acceptedUserId: { type: String }, + joinedAvatar: { type: String } + }], + comments: [{ + commentUserId: { type: String }, + commentUsername: { type: String }, + comment: { type: String }, + commentAvatar: { type: String } + }] }) module.exports = mongoose.model('travelModel', travelSchema);
M models/userModel.js → models/userModel.js

@@ -1,9 +1,11 @@

var mongoose = require('mongoose'), Schema = mongoose.Schema; +var mongooseUniqueValidator = require('mongoose-unique-validator'); + var userSchema = new Schema({ - username: { type: String }, + username: { type: String, unique: true }, password: { type: String }, description: { type: String }, avatar: { type: String },

@@ -16,4 +18,6 @@ value: { type: Number },

comment: { type: String } }] }) + +userSchema.plugin(mongooseUniqueValidator); module.exports = mongoose.model('userModel', userSchema);
M package.json → package.json

@@ -13,6 +13,7 @@ "jsonwebtoken": "latest",

"method-override": "^2.1.2", "mongoose": "latest", "morgan": "latest", - "md5": "latest" + "md5": "latest", + "mongoose-unique-validator": "^1.0.2" } }
M server.js → server.js

@@ -122,9 +122,14 @@ apiRoutes.route('/travels/:id')

.put(travelCtrl.updateTravel) .delete(travelCtrl.deleteTravel); -apiRoutes.route('/travels/join/:travelId') +/*apiRoutes.route('/travels/join/:travelId') .post(travelCtrl.addJoin); apiRoutes.route('/travels/unjoin/:travelId') + .post(travelCtrl.doUnjoin);*/ + +apiRoutes.route('/travels/:travelId/join') + .post(travelCtrl.addJoin); +apiRoutes.route('/travels/:travelId/unjoin') .post(travelCtrl.doUnjoin); apiRoutes.route('/travels/comment/:travelId')