arnaucube
arnaucube/commonroutesServerPublic Self-hosted repository
commonroutesServer/controllers/travelController.js
controllers/travelController.jsRaw
  1//File: controllers/travelController.js
  2var mongoose = require('mongoose');
  3var travelModel  = mongoose.model('travelModel');
  4
  5var userModel  = mongoose.model('userModel');
  6
  7var joinModel  = mongoose.model('joinModel');
  8var commentModel  = mongoose.model('commentModel');
  9
 10//GET
 11exports.findAllTravels = function(req, res) {
 12	//get travels with futures dates ($gte - greater than and equal than)
 13	travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
 14	    if(err) res.send(500, err.message);
 15
 16		res.status(200).jsonp(travels);
 17	});
 18
 19
 20};
 21
 22//GET
 23exports.findById = function(req, res) {
 24	travelModel.findById(req.params.id, function(err, travel) {
 25    if(err) return res.send(500, err.message);
 26
 27    console.log('GET /travel/' + req.params.id);
 28		res.status(200).jsonp(travel);
 29	});
 30};
 31
 32exports.findAllTravelsFromUsername = function(req, res) {
 33    travelModel.find({
 34      owner: req.params.username
 35  }, function(err, travels) {
 36
 37      if (err) throw err;
 38
 39      if (!travels) {
 40        res.json({ success: false, message: 'no travels for user' });
 41    } else if (travels) {
 42        console.log(travels);
 43          // return the information including token as JSON
 44          res.jsonp(travels);
 45
 46
 47      }
 48
 49    });
 50};
 51
 52exports.addTravel = function(req, res) {
 53	console.log('POST new travel, title: ' + req.body.title);
 54	var travel = new travelModel({
 55		title: req.body.title,
 56	    description:   req.body.description,
 57	    owner:   req.body.owner,
 58	    from:   req.body.from,
 59	    to:   req.body.to,
 60	    date:   req.body.date,
 61		periodic: req.body.periodic,
 62	    generateddate:   req.body.generateddate,
 63		seats: req.body.seats,
 64		package: req.body.package,
 65		icon: req.body.icon,
 66		phone: req.body.phone,
 67		telegram: req.body.telegram,
 68		collectivized: req.body.collectivized,
 69		modality: req.body.modality
 70	});
 71
 72	travel.save(function(err, travel) {
 73		if(err) return res.send(500, err.message);
 74    //res.status(200).jsonp(travel);
 75		travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
 76		    if(err) res.send(500, err.message);
 77
 78			res.status(200).jsonp(travels);
 79		});
 80	});
 81
 82};
 83
 84//PUT
 85exports.updateTravel = function(req, res) {
 86	ActivityModel.findById(req.params.id, function(err, tvshow) {
 87		tvshow.title   = req.body.petId;
 88		tvshow.year    = req.body.year;
 89		tvshow.country = req.body.country;
 90		tvshow.poster  = req.body.poster;
 91		tvshow.seasons = req.body.seasons;
 92		tvshow.genre   = req.body.genre;
 93		tvshow.summary = req.body.summary;
 94
 95		tvshow.save(function(err) {
 96			if(err) return res.send(500, err.message);
 97      res.status(200).jsonp(tvshow);
 98		});
 99	});
100};
101
102//DELETE
103exports.deleteTravel = function(req, res) {
104	travelModel.findById(req.params.id, function(err, travel) {
105		travel.remove(function(err) {
106			if(err) return res.send(500, err.message);
107
108			travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
109					if(err) res.send(500, err.message);
110					res.status(200).jsonp(travels);
111			});
112		})
113	});
114};
115
116
117/* join */
118exports.addJoin = function(req, res) {
119	travelModel.findById(req.params.travelId, function(err, travel){
120		console.log(travel.title);
121		var join = {
122			joinedUserId: req.body.joinedUserId,
123			joinedUsername: req.body.joinedUsername,
124			acceptedUserId: req.body.acceptedUserId,
125			joinedAvatar: req.body.joinedAvatar
126		};
127		travel.joins.push(join);
128
129		travel.save(function(err, travel) {
130			if(err) return res.send(500, err.message);
131	    //res.status(200).jsonp(travel);
132			travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
133			    if(err) res.send(500, err.message);
134					res.status(200).jsonp(travels);
135			});
136		});
137	});
138};
139
140exports.doUnjoin = function(req, res) {
141
142	travelModel.findById(req.params.travelId, function(err, travel){
143		for(var i=0; i<travel.joins.length; i++)
144		{
145			if(travel.joins[i].joinedUsername==req.body.joinedUsername)
146			{
147				travel.joins.splice(i, 1);
148			}
149		}
150
151		travel.save(function(err, travel) {
152			if(err) return res.send(500, err.message);
153			//res.status(200).jsonp(travel);
154			travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
155			    if(err) res.send(500, err.message);
156					res.status(200).jsonp(travels);
157			});
158		});
159	});
160};
161
162exports.getJoinsByTravelId = function(req, res) {
163    joinModel.find({
164      travelId: req.params.travelId
165  }, function(err, joins) {
166
167      if (err) throw err;
168
169      if (!joins) {
170        res.json({ success: false, message: 'no joins for travelId' });
171    } else if (joins) {
172          // return the information including token as JSON
173		 res.jsonp(joins);
174
175      }
176
177    });
178};
179
180
181/* comment */
182exports.addComment = function(req, res) {
183	/*var comment = new commentModel({
184		travelId: req.params.travelId,
185		commentUserId: req.body.commentUserId,
186		commentUsername: req.body.commentUsername,
187		comment: req.body.comment,
188		commentAvatar: req.body.commentAvatar
189	});
190
191	comment.save(function(err, comment) {
192		if(err) return res.send(500, err.message);
193    res.status(200).jsonp(comment);
194	});*/
195
196	travelModel.findById(req.params.travelId, function(err, travel){
197		console.log(travel.title);
198		var comment = {
199			commentUserId: req.body.commentUserId,
200			commentUsername: req.body.commentUsername,
201			comment: req.body.comment,
202			commentAvatar: req.body.commentAvatar
203		};
204		travel.comments.push(comment);
205
206		travel.save(function(err, travel) {
207			if(err) return res.send(500, err.message);
208	    //res.status(200).jsonp(travel);
209			travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
210			    if(err) res.send(500, err.message);
211					res.status(200).jsonp(travels);
212			});
213		});
214	});
215};
216
217exports.getCommentsByTravelId = function(req, res) {
218    commentModel.find({
219      travelId: req.params.travelId
220  }, function(err, comments) {
221
222      if (err) throw err;
223
224      if (!comments) {
225        res.json({ success: false, message: 'no comments for travelId' });
226    } else if (comments) {
227          // return the information including token as JSON
228		 res.jsonp(comments);
229
230      }
231
232    });
233};