commonroutesApp/www/js/controllers.js
www/js/controllers.jsRaw
1
2var urlapi="http://localhost:3000/api/";
3//var urlapi="https://collectivecar.paas.primustech.io/api/";
4
5
6//localStorage.setItem("c_username", "user2");
7//localStorage.setItem("c_token", "");
8
9
10angular.module('starter.controllers', ['pascalprecht.translate'])
11
12.controller('AppCtrl', function($scope, $ionicModal, $timeout, $http, $window, $ionicLoading) {
13 // With the new view caching in Ionic, Controllers are only called
14 // when they are recreated or on app start, instead of every page change.
15 // To listen for when this page is active (for example, to refresh data),
16 // listen for the $ionicView.enter event:
17 //$scope.$on('$ionicView.enter', function(e) {
18 //});
19
20 // Form data for the login modal
21 $scope.loginData = {};
22 $scope.signupData= {};
23
24 $scope.storageusername=localStorage.getItem("c_username");
25 $scope.storageavatar=localStorage.getItem("c_avatar");
26 // Create the login modal that we will use later
27 $ionicModal.fromTemplateUrl('templates/login.html', {
28 scope: $scope
29 }).then(function(modal) {
30 $scope.modalLogin = modal;
31 });
32 $ionicModal.fromTemplateUrl('templates/signup.html', {
33 scope: $scope
34 }).then(function(modal) {
35 $scope.modalSignup = modal;
36 });
37
38 // Triggered in the login modal to close it
39 $scope.closeLogin = function() {
40 $scope.modalLogin.hide();
41 };
42 $scope.closeSignup = function() {
43 $scope.modalSignup.hide();
44 };
45
46 // Open the login modal
47 $scope.login = function() {
48 $scope.modalLogin.show();
49 };
50 $scope.signup = function() {
51 $scope.modalSignup.show();
52 };
53
54 // Perform the login action when the user submits the login form
55 $scope.doLogin = function() {
56 console.log('Doing login', $scope.loginData);
57
58 $http({
59 url: urlapi + 'auth',
60 method: "POST",
61 data: $scope.loginData
62 })
63 .then(function(response) {
64 // success
65 console.log("response: ");
66 console.log(response.data);
67 if(response.data.success==true)
68 {
69 console.log("login successful");
70 localStorage.setItem("c_username", $scope.loginData.username);
71 localStorage.setItem("c_token", response.data.token);
72 localStorage.setItem("c_userid", response.data.userid);
73 localStorage.setItem("c_avatar", response.data.avatar);
74
75 localStorage.setItem("c_userdata", JSON.stringify(response.data.userdata));
76 }else{
77 console.log("login failed");
78 }
79 $timeout(function() {
80 $scope.closeLogin();
81 $window.location.reload(true);
82 }, 1000);
83
84 },
85 function(response) { // optional
86 // failed
87 console.log(response);
88 });
89
90 };
91 $scope.doSignup = function() {
92 console.log('Doing signup', $scope.signupData);
93 if($scope.emptyParams($scope.signupData))
94 {
95 $http({
96 url: urlapi + 'users',
97 method: "POST",
98 data: $scope.signupData
99 })
100 .then(function(response) {
101 // success
102 console.log("response: ");
103 console.log(response.data);
104 $timeout(function() {
105 $scope.closeSignup();
106 $scope.login();
107 }, 1000);
108
109 },
110 function(response) { // optional
111 // failed
112 $ionicLoading.show({ template: 'Username already taken', noBackdrop: true, duration: 2000 });
113 });
114 }else{
115 $ionicLoading.show({ template: 'First complete all parameters', noBackdrop: true, duration: 2000 });
116 }
117
118 };
119 $scope.emptyParams = function(obj){
120 if(obj.username==undefined)
121 {
122 return(false);
123 }
124 if(obj.password==undefined)
125 {
126 return(false);
127 }
128 if(obj.mail==undefined)
129 {
130 return(false);
131 }
132 if(obj.phone==undefined)
133 {
134 return(false);
135 }
136 if(obj.avatar==undefined)
137 {
138 return(false);
139 }
140 return(true);
141 };
142 $scope.avatars=[
143 "turtle",
144 "cat",
145 "toucan",
146 "racoon",
147 "tiger",
148 "squirrel",
149 "sheep",
150 "penguin",
151 "panda",
152 "owl",
153 "pelican",
154 "whale",
155 "snake",
156 "mouse",
157 "giraffe",
158 "macaw",
159 "lion",
160 "llama",
161 "kangaroo",
162 "hen",
163 "frog",
164 "clown-fish",
165 "chameleon",
166 "octopus"
167 ];
168 $scope.avatarSelect = function(avat){
169 $scope.signupData.avatar=avat;
170 //alert($scope.signupData.avatar);
171 };
172 $scope.logout = function(){
173 localStorage.removeItem("c_username");
174 localStorage.removeItem("c_token");
175 localStorage.removeItem("c_avatar");
176 localStorage.removeItem("c_userid");
177 localStorage.removeItem("c_userdata");
178 $window.location.reload(true);
179 };
180})
181
182
183.controller('TravelsCtrl', function($scope, $http, $ionicModal, $timeout, $ionicLoading) {
184 if(localStorage.getItem('c_token')){// adding token to the headers
185 //console.log("token added to headers in run module");
186 //console.log($http.defaults);
187 $http.defaults.headers.post['X-Access-Token'] = localStorage.getItem('c_token');
188 //$http.defaults.headers.post['Content-Type'] = "application/x-www-form-urlencoded; charset=UTF-8";
189 //console.log($http.defaults.headers);
190 }
191 /*if(localStorage.getItem('c_token')){// adding token to the headers
192 $http.defaults.headers.token = localStorage.getItem('c_token');
193 }*/
194
195 $scope.travels="";
196
197 $scope.travels=JSON.parse(localStorage.getItem('c_travels'));
198 $scope.userdata=JSON.parse(localStorage.getItem('c_userdata'));
199 console.log($scope.userdata);
200
201 $scope.doRefresh = function() {
202 /* travels refresh: */
203 $http.get(urlapi + 'travels')
204 .success(function(data, status, headers,config){
205 console.log('data success');
206 console.log(data); // for browser console
207 $scope.travels = data; // for UI
208 localStorage.setItem('c_travels', JSON.stringify($scope.travels));
209 localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
210 $scope.$broadcast('scroll.refreshComplete');//refresher stop
211
212 })
213 .error(function(data, status, headers,config){
214 console.log('data error');
215 $scope.$broadcast('scroll.refreshComplete');//refresher stop
216 $ionicLoading.show({ template: 'Error connecting server', noBackdrop: true, duration: 2000 });
217
218 })
219 .then(function(result){
220 travels = result.data;
221 $ionicLoading.show({ template: 'Travels actualized from server!', noBackdrop: true, duration: 2000 });
222 });
223
224 /* users refresh: */
225 $http.get(urlapi + 'users')
226 .success(function(data, status, headers, config){
227 console.log('data success');
228 console.log(data); // for browser console
229 $scope.users = data; // for UI
230 localStorage.setItem('c_users', JSON.stringify($scope.users));
231 $scope.$broadcast('scroll.refreshComplete');//refresher stop
232 })
233 .error(function(data, status, headers,config){
234 console.log('data error');
235 $scope.$broadcast('scroll.refreshComplete');//refresher stop
236 })
237 .then(function(result){
238 users = result.data;
239 });
240 };
241 $scope.newtravel={};
242 /*$scope.newtravel={
243 title: "prova",
244 from: "prova",
245 to: "prova",
246 seats: 3,
247 package: true,
248 phone: 123,
249 telegram: "telusr",
250 description: "this is the description of prova"
251 };*/
252
253 // Create the login modal that we will use later
254 $ionicModal.fromTemplateUrl('templates/newofferingtravel.html', {
255 scope: $scope
256 }).then(function(modal) {
257 $scope.modalOffering = modal;
258 });
259
260 // Create the login modal that we will use later
261 $ionicModal.fromTemplateUrl('templates/newaskingtravel.html', {
262 scope: $scope
263 }).then(function(modal) {
264 $scope.modalAsking = modal;
265 });
266
267 $ionicModal.fromTemplateUrl('templates/newaskingpackage.html', {
268 scope: $scope
269 }).then(function(modal) {
270 $scope.modalPackage = modal;
271 });
272
273 // Triggered in the login modal to close it
274 $scope.closeNewOfferingTravel = function() {
275 $scope.modalOffering.hide();
276 };
277 // Triggered in the login modal to close it
278 $scope.closeNewAskingTravel = function() {
279 $scope.modalAsking.hide();
280 };
281 $scope.closeNewAskingPackage = function() {
282 $scope.modalPackage.hide();
283 };
284
285 // Open the login modal
286 $scope.showNewOfferingTravel = function() {
287 $scope.modalOffering.show();
288 };
289 // Open the login modal
290 $scope.showNewAskingTravel = function() {
291 $scope.modalAsking.show();
292 };
293 $scope.showNewAskingPackage = function() {
294 $scope.modalPackage.show();
295 };
296
297 // Perform the login action when the user submits the login form
298 $scope.doNewOfferingTravel = function() {
299 console.log('Doing new travel', $scope.newtravel);
300 $scope.newtravel.icon="lorry";
301 $scope.newtravel.generateddate=$scope.newtravel.date;
302 $scope.newtravel.owner=localStorage.getItem("c_username");
303 $scope.newtravel.telegram=JSON.parse(localStorage.getItem("c_userdata")).telegram;
304 $scope.newtravel.phone=JSON.parse(localStorage.getItem("c_userdata")).phone;
305 $scope.newtravel.modality="offering";
306 //$scope.newtravel.token=localStorage.getItem("c_token");
307 console.log($scope.newtravel);
308 $http({
309 url: urlapi + 'travels',
310 method: "POST",
311 data: $scope.newtravel
312 })
313 .then(function(response) {
314 // success
315 console.log("response: ");
316 console.log(response);
317 //$scope.newtravel._id=response.data._id;
318 //$scope.travels.push($scope.newtravel);
319 $scope.travels=response.data;
320 localStorage.setItem('c_travels', JSON.stringify($scope.travels));
321 localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
322 $scope.newtravel={};
323 if(response.data.success==false){
324
325 $ionicLoading.show({ template: 'failed to generate new travel', noBackdrop: true, duration: 2000 });
326 }
327 },
328 function(response) { // optional
329 // failed
330 });
331
332 // Simulate a login delay. Remove this and replace with your login
333 // code if using a login system
334 $timeout(function() {
335 $scope.closeNewOfferingTravel();
336 }, 1000);
337 };
338
339 $scope.doNewAskingTravel = function() {
340 console.log('Doing new travel', $scope.newtravel);
341 $scope.newtravel.icon="lorry";
342 $scope.newtravel.generateddate=$scope.newtravel.date;
343 $scope.newtravel.owner=localStorage.getItem("c_username");
344 $scope.newtravel.telegram=JSON.parse(localStorage.getItem("c_userdata")).telegram;
345 $scope.newtravel.phone=JSON.parse(localStorage.getItem("c_userdata")).phone;
346
347 $scope.newtravel.modality="asking";
348 console.log($scope.newtravel);
349 $http({
350 url: urlapi + 'travels',
351 method: "POST",
352 data: $scope.newtravel
353 })
354 .then(function(response) {
355 // success
356 console.log("response: ");
357 console.log(response);
358 //$scope.newtravel._id=response.data._id;
359 //$scope.travels.push($scope.newtravel);
360 $scope.travels=response.data;
361 localStorage.setItem('c_travels', JSON.stringify($scope.travels));
362 localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
363 $scope.newtravel={};
364 if(response.data.success==false){
365
366 $ionicLoading.show({ template: 'failed to generate new asking travel', noBackdrop: true, duration: 2000 });
367 }
368 },
369 function(response) { // optional
370 // failed
371 });
372
373 // Simulate a login delay. Remove this and replace with your login
374 // code if using a login system
375 $timeout(function() {
376 $scope.closeNewAskingTravel();
377 }, 1000);
378 };
379
380 $scope.doNewAskingPackage = function() {
381 console.log('Doing new package', $scope.newtravel);
382 $scope.newtravel.icon="lorry";
383 $scope.newtravel.generateddate=$scope.newtravel.date;
384 $scope.newtravel.owner=localStorage.getItem("c_username");
385 $scope.newtravel.telegram=JSON.parse(localStorage.getItem("c_userdata")).telegram;
386 $scope.newtravel.phone=JSON.parse(localStorage.getItem("c_userdata")).phone;
387
388 $scope.newtravel.package=true;
389
390 $scope.newtravel.modality="package";
391 console.log($scope.newtravel);
392 $http({
393 url: urlapi + 'travels',
394 method: "POST",
395 data: $scope.newtravel
396 })
397 .then(function(response) {
398 // success
399 console.log("response: ");
400 console.log(response);
401 //$scope.newtravel._id=response.data._id;
402 //$scope.travels.push($scope.newtravel);
403 $scope.travels=response.data;
404 localStorage.setItem('c_travels', JSON.stringify($scope.travels));
405 localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
406 $scope.newtravel={};
407 if(response.data.success==false){
408
409 $ionicLoading.show({ template: 'failed to generate new asking package', noBackdrop: true, duration: 2000 });
410 }
411 },
412 function(response) { // optional
413 // failed
414 });
415
416 // Simulate a login delay. Remove this and replace with your login
417 // code if using a login system
418 $timeout(function() {
419 $scope.closeNewAskingPackage();
420 }, 1000);
421 };
422})
423
424.controller('TravelCtrl', function($scope, $stateParams, $http, $ionicModal, $ionicPopup, $filter) {
425 if(localStorage.getItem('c_token')){// adding token to the headers
426 $http.defaults.headers.common['X-Access-Token'] = localStorage.getItem('c_token');
427 }
428 $scope.storageusername=localStorage.getItem("c_username");
429 console.log($stateParams.travelId);
430 $scope.travels= JSON.parse(localStorage.getItem('c_travels'));
431 $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
432
433 $http.get(urlapi + 'travels/comment/'+$stateParams.travelId)
434 .success(function(data, status, headers,config){
435 console.log(data); // for browser console
436 $scope.comments = data; // for UI
437 })
438 .error(function(data, status, headers,config){
439 console.log('data error');
440 })
441 .then(function(result){
442 comments = result.data;
443 });
444
445 $scope.deleteTravel = function(){
446
447 var confirmPopup = $ionicPopup.confirm({
448 title: 'Deleting publication',
449 template: 'Are you sure you want to delete <b>'+ $scope.travel.title+'</b>?'
450 });
451 confirmPopup.then(function(res) {
452 if(res) {
453 console.log('You are sure');
454 console.log("delete travel: " + $stateParams.travelId);
455 $http({
456 url: urlapi + 'travels/' + $stateParams.travelId,
457 method: "DELETE"
458 })
459 .then(function(response) {
460 console.log(response);
461 },
462 function(response) { // optional
463 // failed
464 });
465 } else {
466 console.log('You are not sure');
467 }
468 });
469
470
471 };
472 $scope.joinTravel = function(){
473 $scope.newjoin={
474 //travelId: $stateParams.travelId,
475 joinedUserId: localStorage.getItem("c_userid"),
476 joinedUsername: localStorage.getItem("c_username"),
477 joinedAvatar: localStorage.getItem("c_avatar")
478 };
479 $http({
480 url: urlapi + 'travels/'+ $stateParams.travelId+'/join',
481 method: "POST",
482 data: $scope.newjoin
483 })
484 .then(function(response) {
485 // success
486 console.log("response: ");
487 console.log(response);
488
489 $scope.travels=response.data;
490 localStorage.setItem('c_travels', JSON.stringify($scope.travels));
491 localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
492 $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
493
494 },
495 function(response) { // optional
496 // failed
497 });
498 };
499 $scope.unjoinTravel = function(){
500 console.log("unjoin");
501 $scope.unjoin={
502 travelId: $stateParams.travelId,
503 joinedUserId: localStorage.getItem("c_userid"),
504 joinedUsername: localStorage.getItem("c_username"),
505 joinedAvatar: localStorage.getItem("c_avatar")
506 };
507 $http({
508 url: urlapi + 'travels/'+ $stateParams.travelId+'/unjoin',
509 method: "POST",
510 data: $scope.unjoin
511 })
512 .then(function(response) {
513 // success
514 console.log("response: ");
515 console.log(response);
516
517 $scope.travels=response.data;
518 localStorage.setItem('c_travels', JSON.stringify($scope.travels));
519 localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
520 $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
521
522 },
523 function(response) { // optional
524 // failed
525 });
526 };
527
528 /* adding comment */
529 $scope.doingNewComment=false;
530 $scope.newComment={};
531
532 $scope.showNewComment = function() {
533 $scope.doingNewComment=true;
534 };
535 $scope.closeNewComment = function() {
536 $scope.doingNewComment=false;
537 };
538 $scope.doNewComment = function() {
539 $scope.newComment.commentUserId=localStorage.getItem("c_userid");
540 $scope.newComment.commentUsername=localStorage.getItem("c_username");
541 $scope.newComment.commentAvatar=localStorage.getItem("c_avatar");
542console.log($scope.newComment);
543 $http({
544 url: urlapi + 'travels/'+ $stateParams.travelId+'/comment',
545 method: "POST",
546 data: $scope.newComment
547 })
548 .then(function(response) {
549 // success
550 console.log("newComment added to server: " + response);
551 console.log(response);
552 $scope.travels=response.data;
553 localStorage.setItem('c_travels', JSON.stringify($scope.travels));
554 localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
555 $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
556
557 if(response.data.success==false){
558
559 $ionicLoading.show({ template: 'failed to generate new asking package', noBackdrop: true, duration: 2000 });
560 }
561 },
562 function(response) { // optional
563 // failed
564 });
565 $scope.closeNewComment();
566 };
567 console.log("a");
568 console.log($scope.storageusername);
569 console.log($scope.travel.owner);
570
571
572 $scope.arrayObjectIndexOf = function(myArray, searchTerm, property) {
573 //console.log(myArray+", "+searchTerm+", "+property);
574 if(myArray)
575 {
576 for(var i = 0, len = myArray.length; i < len; i++) {
577 if (myArray[i][property] === searchTerm){
578 //console.log("i: " + i);
579 return i;
580 }
581 }
582 }
583 //console.log("i: -1");
584 return -1;
585 }
586})
587
588.controller('UsersCtrl', function($scope, $http, $ionicModal, $timeout, $ionicLoading) {
589 $scope.users="";
590
591 $scope.users=JSON.parse(localStorage.getItem('c_users'));
592
593 $scope.doRefresh = function() {
594 /* travels refresh: */
595 $http.get(urlapi + 'travels')
596 .success(function(data, status, headers,config){
597 console.log('data success');
598 console.log(data); // for browser console
599 $scope.travels = data; // for UI
600 localStorage.setItem('c_travels', JSON.stringify($scope.travels));
601 localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
602 $scope.$broadcast('scroll.refreshComplete');//refresher stop
603
604 })
605 .error(function(data, status, headers,config){
606 console.log('data error');
607 $scope.$broadcast('scroll.refreshComplete');//refresher stop
608 $ionicLoading.show({ template: 'Error connecting server', noBackdrop: true, duration: 2000 });
609
610 })
611 .then(function(result){
612 travels = result.data;
613 $ionicLoading.show({ template: 'Travels actualized from server!', noBackdrop: true, duration: 2000 });
614 });
615
616 /* users refresh: */
617 $http.get(urlapi + 'users')
618 .success(function(data, status, headers, config){
619 console.log('data success');
620 console.log(data); // for browser console
621 $scope.users = data; // for UI
622 localStorage.setItem('c_users', JSON.stringify($scope.users));
623 $scope.$broadcast('scroll.refreshComplete');//refresher stop
624 })
625 .error(function(data, status, headers,config){
626 console.log('data error');
627 $scope.$broadcast('scroll.refreshComplete');//refresher stop
628 })
629 .then(function(result){
630 users = result.data;
631 });
632 };
633})
634
635.controller('UserCtrl', function($scope, $stateParams, $http) {
636 //$scope.user="";
637 console.log($stateParams.username);
638 $http.get(urlapi + 'users/byusername/'+$stateParams.username)
639 .success(function(data, status, headers,config){
640 console.log('data success');
641 console.log(data); // for browser console
642 $scope.user = data; // for UI
643 })
644 .error(function(data, status, headers,config){
645 console.log('data error');
646 })
647 .then(function(result){
648 user = result.data;
649 });
650
651 $http.get(urlapi + 'travels/user/'+$stateParams.username)
652 .success(function(data, status, headers,config){
653 console.log('data success');
654 console.log(data); // for browser console
655 $scope.travels = data; // for UI
656 })
657 .error(function(data, status, headers,config){
658 console.log('data error');
659 })
660 .then(function(result){
661 travels = result.data;
662 });
663})
664.controller('SettingsCtrl', function($scope, $stateParams, $translate) {
665 if(localStorage.getItem('lang'))//initialization
666 {
667 $scope.lang=localStorage.getItem('lang');
668 }else{
669 localStorage.setItem('lang', 'english');
670 $scope.lang=localStorage.getItem('lang');
671 }
672
673 $scope.langChange = function(lang){
674 console.log(lang);
675 window.localStorage.setItem('lang', lang);
676 $translate.use(lang);
677 };
678})
679.controller('HelpCtrl', function($scope, $stateParams, $translate) {
680 console.log("help page");
681});