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    console.log($stateParams.travelId);
388    $scope.travels= JSON.parse(localStorage.getItem('c_travels'));
389    $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
390
391    $http.get(urlapi + 'travels/comment/'+$stateParams.travelId)
392        .success(function(data, status, headers,config){
393            console.log(data); // for browser console
394            $scope.comments = data; // for UI
395        })
396        .error(function(data, status, headers,config){
397            console.log('data error');
398        })
399        .then(function(result){
400            comments = result.data;
401    });
402
403    $scope.deleteTravel = function(){
404
405       var confirmPopup = $ionicPopup.confirm({
406         title: 'Deleting publication',
407         template: 'Are you sure you want to delete <b>'+ $scope.travel.title+'</b>?'
408       });
409       confirmPopup.then(function(res) {
410       if(res) {
411         console.log('You are sure');
412         console.log("delete travel: " + $stateParams.travelId);
413         $http({
414             url: urlapi + 'travels/' + $stateParams.travelId,
415             method: "DELETE"
416         })
417         .then(function(response) {
418                 console.log(response);
419         },
420         function(response) { // optional
421                 // failed
422         });
423       } else {
424         console.log('You are not sure');
425       }
426     });
427
428
429    };
430    $scope.joinTravel = function(){
431        $scope.newjoin={
432            //travelId: $stateParams.travelId,
433            joinedUserId: localStorage.getItem("c_userid"),
434            joinedUsername: localStorage.getItem("c_username"),
435            joinedAvatar: localStorage.getItem("c_avatar")
436        };
437        $http({
438            url: urlapi + 'travels/'+ $stateParams.travelId+'/join',
439            method: "POST",
440            data: $scope.newjoin
441        })
442        .then(function(response) {
443                // success
444                console.log("response: ");
445                console.log(response);
446
447        },
448        function(response) { // optional
449                // failed
450        });
451    };
452    $scope.unjoinTravel = function(){
453        console.log("unjoin");
454        $scope.unjoin={
455            travelId: $stateParams.travelId,
456            joinedUserId: localStorage.getItem("c_userid"),
457            joinedUsername: localStorage.getItem("c_username"),
458            joinedAvatar: localStorage.getItem("c_avatar")
459        };
460        $http({
461            url: urlapi + 'travels/'+ $stateParams.travelId+'/unjoin',
462            method: "POST",
463            data: $scope.unjoin
464        })
465        .then(function(response) {
466                // success
467                console.log("response: ");
468                console.log(response);
469
470        },
471        function(response) { // optional
472                // failed
473        });
474    };
475
476    /* adding comment */
477    $scope.doingNewComment=false;
478    $scope.newComment={};
479
480    $scope.showNewComment = function() {
481      $scope.doingNewComment=true;
482    };
483    $scope.closeNewComment = function() {
484        $scope.doingNewComment=false;
485    };
486    $scope.doNewComment = function() {
487        $scope.newComment.commentUserId=localStorage.getItem("c_userid");
488        $scope.newComment.commentUsername=localStorage.getItem("c_username");
489        $scope.newComment.commentAvatar=localStorage.getItem("c_avatar");
490console.log($scope.newComment);
491        $http({
492          url: urlapi + 'travels/comment/' + $stateParams.travelId,
493          method: "POST",
494          data: $scope.newComment
495        })
496        .then(function(response) {
497              // success
498              console.log("newComment added to server: " + response);
499              console.log(response);
500              if(response.data.success==false){
501
502                  $ionicLoading.show({ template: 'failed to generate new asking package', noBackdrop: true, duration: 2000 });
503              }
504        },
505        function(response) { // optional
506              // failed
507        });
508        $scope.closeNewComment();
509    };
510    console.log("a");
511    console.log($scope.storageusername);
512    console.log($scope.travel.owner);
513
514
515    $scope.arrayObjectIndexOf = function(myArray, searchTerm, property) {
516      //console.log(myArray+", "+searchTerm+", "+property);
517        if(myArray)
518        {
519            for(var i = 0, len = myArray.length; i < len; i++) {
520                if (myArray[i][property] === searchTerm){
521                    //console.log("i: " + i);
522                    return i;
523                }
524            }
525        }
526        //console.log("i: -1");
527        return -1;
528    }
529})
530
531.controller('UsersCtrl', function($scope, $http, $ionicModal, $timeout) {
532    $scope.users="";
533
534    $scope.users=JSON.parse(localStorage.getItem('c_users'));
535
536    $scope.doRefresh = function() {
537        $http.get(urlapi + 'users')
538        .success(function(data, status, headers, config){
539            console.log('data success');
540            console.log(data); // for browser console
541            $scope.users = data; // for UI
542            localStorage.setItem('c_users', JSON.stringify($scope.users));
543            $scope.$broadcast('scroll.refreshComplete');//refresher stop
544        })
545        .error(function(data, status, headers,config){
546            console.log('data error');
547            $scope.$broadcast('scroll.refreshComplete');//refresher stop
548        })
549        .then(function(result){
550            users = result.data;
551        });
552    };
553})
554
555.controller('UserCtrl', function($scope, $stateParams, $http) {
556    //$scope.user="";
557    console.log($stateParams.username);
558    $http.get(urlapi + 'users/byusername/'+$stateParams.username)
559        .success(function(data, status, headers,config){
560            console.log('data success');
561            console.log(data); // for browser console
562            $scope.user = data; // for UI
563        })
564        .error(function(data, status, headers,config){
565            console.log('data error');
566        })
567        .then(function(result){
568            user = result.data;
569    });
570
571    $http.get(urlapi + 'travels/user/'+$stateParams.username)
572        .success(function(data, status, headers,config){
573            console.log('data success');
574            console.log(data); // for browser console
575            $scope.travels = data; // for UI
576        })
577        .error(function(data, status, headers,config){
578            console.log('data error');
579        })
580        .then(function(result){
581            travels = result.data;
582    });
583}).controller('SettingsCtrl', function($scope, $stateParams, $translate) {
584  if(localStorage.getItem('lang'))//initialization
585  {
586    $scope.lang=localStorage.getItem('lang');
587  }else{
588    localStorage.setItem('lang', 'english');
589    $scope.lang=localStorage.getItem('lang');
590  }
591
592  $scope.langChange = function(lang){
593    console.log(lang);
594      window.localStorage.setItem('lang', lang);
595      $translate.use(lang);
596  };
597});