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