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 userModel.find({
56 token: req.headers['x-access-token']
57 }, function(err, users){
58 var user=users[0];
59
60 var travel = new travelModel({
61 title: req.body.title,
62 description: req.body.description,
63 owner: user.username,
64 from: req.body.from,
65 to: req.body.to,
66 date: req.body.date,
67 periodic: req.body.periodic,
68 generateddate: req.body.generateddate,
69 seats: req.body.seats,
70 package: req.body.package,
71 icon: req.body.icon,
72 phone: user.phone,
73 telegram: user.telegram,
74 collectivized: req.body.collectivized,
75 modality: req.body.modality
76 });
77 if(travel.title==undefined)
78 {
79 return res.status(500).jsonp("empty inputs");
80 }else if(travel.description==undefined)
81 {
82 return res.status(500).jsonp("empty inputs");
83 }else if(travel.from==undefined)
84 {
85 return res.status(500).jsonp("empty inputs");
86 }else if(travel.to==undefined)
87 {
88 return res.status(500).jsonp("empty inputs");
89 }else if(travel.date==undefined)
90 {
91 return res.status(500).jsonp("empty inputs");
92 }else if(travel.title==undefined)
93 {
94 return res.status(500).jsonp("empty inputs");
95 }
96
97 travel.save(function(err, travel) {
98 if(err) return res.send(500, err.message);
99 //res.status(200).jsonp(travel);
100 travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
101 if(err) res.send(500, err.message);
102
103 res.status(200).jsonp(travels);
104 });
105 });//end of travel.save
106 });//end of usermodel.find
107
108
109};
110
111//PUT
112exports.updateTravel = function(req, res) {
113 ActivityModel.findById(req.params.id, function(err, tvshow) {
114 tvshow.title = req.body.petId;
115 tvshow.year = req.body.year;
116 tvshow.country = req.body.country;
117 tvshow.poster = req.body.poster;
118 tvshow.seasons = req.body.seasons;
119 tvshow.genre = req.body.genre;
120 tvshow.summary = req.body.summary;
121
122 tvshow.save(function(err) {
123 if(err) return res.send(500, err.message);
124 res.status(200).jsonp(tvshow);
125 });
126 });
127};
128
129//DELETE
130exports.deleteTravel = function(req, res) {
131 userModel.find({
132 token: req.headers['x-access-token']
133 }, function(err, users){
134 var user=users[0];
135
136 travelModel.findById(req.params.id, function(err, travel) {
137 if(travel.owner==user.username)
138 {
139 travel.remove(function(err) {
140 if(err) return res.send(500, err.message);
141
142 travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
143 if(err) res.send(500, err.message);
144 res.status(200).jsonp(travels);
145 });
146 });
147 }
148 });
149 });
150};
151
152
153/* join */
154exports.addJoin = function(req, res) {
155 userModel.find({
156 token: req.headers['x-access-token']
157 }, function(err, users){
158 var user=users[0];
159
160 travelModel.findById(req.params.travelId, function(err, travel){
161 console.log(travel.title);
162 var join = {
163 joinedUserId: user._id,
164 joinedUsername: user.username,
165 acceptedUserId: req.body.acceptedUserId,
166 joinedAvatar: user.avatar
167 };
168 travel.joins.push(join);
169
170
171
172 travel.save(function(err, travel) {
173 if(err) return res.send(500, err.message);
174 //res.status(200).jsonp(travel);
175 travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
176 if(err) res.send(500, err.message);
177 res.status(200).jsonp(travels);
178 });
179 });
180
181 //start saving notification, get user owner of travel
182 userModel.find({
183 username: travel.owner
184 }, function(err, userowners) {
185 var userowner=userowners[0];
186 //notification
187 var notification = {
188 type: "join",
189 otherusername: user.username,
190 description: "user "+user.username+" joins your travel "+travel.title,
191 date: new Date(),
192 link: ""
193 };
194 userowner.notifications.push(notification);
195 userowner.save(function(err, userowner) {
196 console.log("notification saved");
197 });
198 });//end saving notification
199
200 });
201
202 });
203};
204
205exports.doUnjoin = function(req, res) {
206 userModel.find({
207 token: req.headers['x-access-token']
208 }, function(err, users){
209 var user=users[0];
210
211 travelModel.findById(req.params.travelId, function(err, travel){
212 for(var i=0; i<travel.joins.length; i++)
213 {
214 if(travel.joins[i].joinedUsername==user.username)
215 {
216 travel.joins.splice(i, 1);
217 }
218 }
219
220 travel.save(function(err, travel) {
221 if(err) return res.send(500, err.message);
222 //res.status(200).jsonp(travel);
223 travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
224 if(err) res.send(500, err.message);
225 res.status(200).jsonp(travels);
226 });
227 });
228
229 });
230 });
231};
232
233exports.getJoinsByTravelId = function(req, res) {
234 joinModel.find({
235 travelId: req.params.travelId
236 }, function(err, joins) {
237
238 if (err) throw err;
239
240 if (!joins) {
241 res.json({ success: false, message: 'no joins for travelId' });
242 } else if (joins) {
243 // return the information including token as JSON
244 res.jsonp(joins);
245
246 }
247
248 });
249};
250
251
252/* comment */
253exports.addComment = function(req, res) {
254 /*var comment = new commentModel({
255 travelId: req.params.travelId,
256 commentUserId: req.body.commentUserId,
257 commentUsername: req.body.commentUsername,
258 comment: req.body.comment,
259 commentAvatar: req.body.commentAvatar
260 });
261
262 comment.save(function(err, comment) {
263 if(err) return res.send(500, err.message);
264 res.status(200).jsonp(comment);
265 });*/
266 userModel.find({
267 token: req.headers['x-access-token']
268 }, function(err, users){
269 var user=users[0];
270
271 travelModel.findById(req.params.travelId, function(err, travel){
272 console.log(travel.title);
273 var comment = {
274 commentUserId: user._id,
275 commentUsername: user.username,
276 comment: req.body.comment,
277 commentAvatar: user.avatar
278 };
279 travel.comments.push(comment);
280
281 travel.save(function(err, travel) {
282 if(err) return res.send(500, err.message);
283 //res.status(200).jsonp(travel);
284 travelModel.find({date: {$gte: new Date()}}, function(err, travels) {
285 if(err) res.send(500, err.message);
286 res.status(200).jsonp(travels);
287 });
288 });
289
290 //start saving notification, get user owner of travel
291 userModel.find({
292 username: travel.owner
293 }, function(err, userowners) {
294 var userowner=userowners[0];
295 //notification
296 var notification = {
297 type: "comment",
298 otherusername: user.username,
299 description: "user "+user.username+" comments your travel "+travel.title,
300 date: new Date(),
301 link: ""
302 };
303 userowner.notifications.push(notification);
304 userowner.save(function(err, userowner) {
305 console.log("notification saved");
306 });
307 });//end saving notification
308
309 });
310 });//end of userModel.find
311};
312
313exports.getCommentsByTravelId = function(req, res) {
314 commentModel.find({
315 travelId: req.params.travelId
316 }, function(err, comments) {
317
318 if (err) throw err;
319
320 if (!comments) {
321 res.json({ success: false, message: 'no comments for travelId' });
322 } else if (comments) {
323 // return the information including token as JSON
324 res.jsonp(comments);
325
326 }
327
328 });
329};