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			date: {$gte: new Date()}
 36  }, function(err, travels) {
 37
 38      if (err) throw err;
 39
 40      if (!travels) {
 41        res.json({ success: false, message: 'no travels for user' });
 42    } else if (travels) {
 43        console.log(travels);
 44          // return the information including token as JSON
 45          res.jsonp(travels);
 46
 47
 48      }
 49
 50    });
 51};
 52
 53exports.addTravel = function(req, res) {
 54	console.log('POST new travel, title: ' + req.body.title);
 55	var travel = new travelModel({
 56		title: req.body.title,
 57	    description:   req.body.description,
 58	    owner:   req.body.owner,
 59	    from:   req.body.from,
 60	    to:   req.body.to,
 61	    date:   req.body.date,
 62		periodic: req.body.periodic,
 63	    generateddate:   req.body.generateddate,
 64		seats: req.body.seats,
 65		package: req.body.package,
 66		icon: req.body.icon,
 67		phone: req.body.phone,
 68		telegram: req.body.telegram,
 69		collectivized: req.body.collectivized,
 70		modality: req.body.modality
 71	});
 72	if(travel.title==undefined)
 73	{
 74		return res.status(500).jsonp("empty inputs");
 75	}else if(travel.description==undefined)
 76	{
 77		return res.status(500).jsonp("empty inputs");
 78	}else if(travel.from==undefined)
 79	{
 80		return res.status(500).jsonp("empty inputs");
 81	}else if(travel.to==undefined)
 82	{
 83		return res.status(500).jsonp("empty inputs");
 84	}else if(travel.date==undefined)
 85	{
 86		return res.status(500).jsonp("empty inputs");
 87	}else if(travel.seats==undefined)
 88	{
 89		return res.status(500).jsonp("empty inputs");
 90	}else if(travel.title==undefined)
 91	{
 92		return res.status(500).jsonp("empty inputs");
 93	}
 94
 95	travel.save(function(err, travel) {
 96		if(err) return res.send(500, err.message);
 97    //res.status(200).jsonp(travel);
 98		travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
 99		    if(err) res.send(500, err.message);
100
101			res.status(200).jsonp(travels);
102		});
103	});
104
105};
106
107//PUT
108exports.updateTravel = function(req, res) {
109	ActivityModel.findById(req.params.id, function(err, tvshow) {
110		tvshow.title   = req.body.petId;
111		tvshow.year    = req.body.year;
112		tvshow.country = req.body.country;
113		tvshow.poster  = req.body.poster;
114		tvshow.seasons = req.body.seasons;
115		tvshow.genre   = req.body.genre;
116		tvshow.summary = req.body.summary;
117
118		tvshow.save(function(err) {
119			if(err) return res.send(500, err.message);
120      res.status(200).jsonp(tvshow);
121		});
122	});
123};
124
125//DELETE
126exports.deleteTravel = function(req, res) {
127	travelModel.findById(req.params.id, function(err, travel) {
128		travel.remove(function(err) {
129			if(err) return res.send(500, err.message);
130
131			travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
132					if(err) res.send(500, err.message);
133					res.status(200).jsonp(travels);
134			});
135		})
136	});
137};
138
139
140/* join */
141exports.addJoin = function(req, res) {
142	travelModel.findById(req.params.travelId, function(err, travel){
143		console.log(travel.title);
144		var join = {
145			joinedUserId: req.body.joinedUserId,
146			joinedUsername: req.body.joinedUsername,
147			acceptedUserId: req.body.acceptedUserId,
148			joinedAvatar: req.body.joinedAvatar
149		};
150		travel.joins.push(join);
151
152		travel.save(function(err, travel) {
153			if(err) return res.send(500, err.message);
154	    //res.status(200).jsonp(travel);
155			travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
156			    if(err) res.send(500, err.message);
157					res.status(200).jsonp(travels);
158			});
159		});
160	});
161};
162
163exports.doUnjoin = function(req, res) {
164
165	travelModel.findById(req.params.travelId, function(err, travel){
166		for(var i=0; i<travel.joins.length; i++)
167		{
168			if(travel.joins[i].joinedUsername==req.body.joinedUsername)
169			{
170				travel.joins.splice(i, 1);
171			}
172		}
173
174		travel.save(function(err, travel) {
175			if(err) return res.send(500, err.message);
176			//res.status(200).jsonp(travel);
177			travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
178			    if(err) res.send(500, err.message);
179					res.status(200).jsonp(travels);
180			});
181		});
182	});
183};
184
185exports.getJoinsByTravelId = function(req, res) {
186    joinModel.find({
187      travelId: req.params.travelId
188  }, function(err, joins) {
189
190      if (err) throw err;
191
192      if (!joins) {
193        res.json({ success: false, message: 'no joins for travelId' });
194    } else if (joins) {
195          // return the information including token as JSON
196		 res.jsonp(joins);
197
198      }
199
200    });
201};
202
203
204/* comment */
205exports.addComment = function(req, res) {
206	/*var comment = new commentModel({
207		travelId: req.params.travelId,
208		commentUserId: req.body.commentUserId,
209		commentUsername: req.body.commentUsername,
210		comment: req.body.comment,
211		commentAvatar: req.body.commentAvatar
212	});
213
214	comment.save(function(err, comment) {
215		if(err) return res.send(500, err.message);
216    res.status(200).jsonp(comment);
217	});*/
218
219	travelModel.findById(req.params.travelId, function(err, travel){
220		console.log(travel.title);
221		var comment = {
222			commentUserId: req.body.commentUserId,
223			commentUsername: req.body.commentUsername,
224			comment: req.body.comment,
225			commentAvatar: req.body.commentAvatar
226		};
227		travel.comments.push(comment);
228
229		travel.save(function(err, travel) {
230			if(err) return res.send(500, err.message);
231	    //res.status(200).jsonp(travel);
232			travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
233			    if(err) res.send(500, err.message);
234					res.status(200).jsonp(travels);
235			});
236		});
237	});
238};
239
240exports.getCommentsByTravelId = function(req, res) {
241    commentModel.find({
242      travelId: req.params.travelId
243  }, function(err, comments) {
244
245      if (err) throw err;
246
247      if (!comments) {
248        res.json({ success: false, message: 'no comments for travelId' });
249    } else if (comments) {
250          // return the information including token as JSON
251		 res.jsonp(comments);
252
253      }
254
255    });
256};