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            localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
204            $scope.$broadcast('scroll.refreshComplete');//refresher stop
205
206        })
207        .error(function(data, status, headers,config){
208            console.log('data error');
209            $scope.$broadcast('scroll.refreshComplete');//refresher stop
210            $ionicLoading.show({ template: 'Error connecting server', noBackdrop: true, duration: 2000 });
211
212        })
213        .then(function(result){
214            travels = result.data;
215            $ionicLoading.show({ template: 'Travels actualized from server!', noBackdrop: true, duration: 2000 });
216        });
217    };
218    $scope.newtravel={};
219    /*$scope.newtravel={
220        title: "prova",
221        from: "prova",
222        to: "prova",
223        seats: 3,
224        package: true,
225        phone: 123,
226        telegram: "telusr",
227        description: "this is the description of prova"
228    };*/
229
230  // Create the login modal that we will use later
231  $ionicModal.fromTemplateUrl('templates/newofferingtravel.html', {
232    scope: $scope
233  }).then(function(modal) {
234    $scope.modalOffering = modal;
235  });
236
237  // Create the login modal that we will use later
238  $ionicModal.fromTemplateUrl('templates/newaskingtravel.html', {
239    scope: $scope
240  }).then(function(modal) {
241    $scope.modalAsking = modal;
242  });
243
244  $ionicModal.fromTemplateUrl('templates/newaskingpackage.html', {
245    scope: $scope
246  }).then(function(modal) {
247    $scope.modalPackage = modal;
248  });
249
250  // Triggered in the login modal to close it
251  $scope.closeNewOfferingTravel = function() {
252    $scope.modalOffering.hide();
253  };
254  // Triggered in the login modal to close it
255  $scope.closeNewAskingTravel = function() {
256    $scope.modalAsking.hide();
257  };
258  $scope.closeNewAskingPackage = function() {
259    $scope.modalPackage.hide();
260  };
261
262  // Open the login modal
263  $scope.showNewOfferingTravel = function() {
264    $scope.modalOffering.show();
265  };
266  // Open the login modal
267  $scope.showNewAskingTravel = function() {
268    $scope.modalAsking.show();
269  };
270  $scope.showNewAskingPackage = function() {
271    $scope.modalPackage.show();
272  };
273
274  // Perform the login action when the user submits the login form
275  $scope.doNewOfferingTravel = function() {
276    console.log('Doing new travel', $scope.newtravel);
277    $scope.newtravel.icon="lorry";
278    $scope.newtravel.generateddate=$scope.newtravel.date;
279    $scope.newtravel.owner=localStorage.getItem("c_username");
280
281    $scope.newtravel.modality="offering";
282    //$scope.newtravel.token=localStorage.getItem("c_token");
283    console.log($scope.newtravel);
284    $http({
285        url: urlapi + 'travels',
286        method: "POST",
287        data: $scope.newtravel
288    })
289    .then(function(response) {
290            // success
291            console.log("response: ");
292            console.log(response);
293            //$scope.newtravel._id=response.data._id;
294            //$scope.travels.push($scope.newtravel);
295            $scope.travels=response.data;
296            localStorage.setItem('c_travels', JSON.stringify($scope.travels));
297            localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
298            $scope.newtravel={};
299            if(response.data.success==false){
300
301                $ionicLoading.show({ template: 'failed to generate new travel', noBackdrop: true, duration: 2000 });
302            }
303    },
304    function(response) { // optional
305            // failed
306    });
307
308    // Simulate a login delay. Remove this and replace with your login
309    // code if using a login system
310    $timeout(function() {
311      $scope.closeNewOfferingTravel();
312    }, 1000);
313  };
314
315  $scope.doNewAskingTravel = function() {
316    console.log('Doing new travel', $scope.newtravel);
317    $scope.newtravel.icon="lorry";
318    $scope.newtravel.generateddate=$scope.newtravel.date;
319    $scope.newtravel.owner=localStorage.getItem("c_username");
320
321    $scope.newtravel.modality="asking";
322    console.log($scope.newtravel);
323    $http({
324        url: urlapi + 'travels',
325        method: "POST",
326        data: $scope.newtravel
327    })
328    .then(function(response) {
329            // success
330            console.log("response: ");
331            console.log(response);
332            //$scope.newtravel._id=response.data._id;
333            //$scope.travels.push($scope.newtravel);
334            $scope.travels=response.data;
335            localStorage.setItem('c_travels', JSON.stringify($scope.travels));
336            localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
337            $scope.newtravel={};
338            if(response.data.success==false){
339
340                $ionicLoading.show({ template: 'failed to generate new asking travel', noBackdrop: true, duration: 2000 });
341            }
342    },
343    function(response) { // optional
344            // failed
345    });
346
347    // Simulate a login delay. Remove this and replace with your login
348    // code if using a login system
349    $timeout(function() {
350      $scope.closeNewAskingTravel();
351    }, 1000);
352  };
353
354  $scope.doNewAskingPackage = function() {
355    console.log('Doing new package', $scope.newtravel);
356    $scope.newtravel.icon="lorry";
357    $scope.newtravel.generateddate=$scope.newtravel.date;
358    $scope.newtravel.owner=localStorage.getItem("c_username");
359    $scope.newtravel.package=true;
360
361    $scope.newtravel.modality="package";
362    console.log($scope.newtravel);
363    $http({
364        url: urlapi + 'travels',
365        method: "POST",
366        data: $scope.newtravel
367    })
368    .then(function(response) {
369            // success
370            console.log("response: ");
371            console.log(response);
372            //$scope.newtravel._id=response.data._id;
373            //$scope.travels.push($scope.newtravel);
374            $scope.travels=response.data;
375            localStorage.setItem('c_travels', JSON.stringify($scope.travels));
376            localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
377            $scope.newtravel={};
378            if(response.data.success==false){
379
380                $ionicLoading.show({ template: 'failed to generate new asking package', noBackdrop: true, duration: 2000 });
381            }
382    },
383    function(response) { // optional
384            // failed
385    });
386
387    // Simulate a login delay. Remove this and replace with your login
388    // code if using a login system
389    $timeout(function() {
390      $scope.closeNewAskingPackage();
391    }, 1000);
392  };
393})
394
395.controller('TravelCtrl', function($scope, $stateParams, $http, $ionicModal, $ionicPopup, $filter) {
396    if(localStorage.getItem('c_token')){// adding token to the headers
397        $http.defaults.headers.common['X-Access-Token'] = localStorage.getItem('c_token');
398    }
399    $scope.storageusername=localStorage.getItem("c_username");
400    console.log($stateParams.travelId);
401    $scope.travels= JSON.parse(localStorage.getItem('c_travels'));
402    $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
403
404    $http.get(urlapi + 'travels/comment/'+$stateParams.travelId)
405        .success(function(data, status, headers,config){
406            console.log(data); // for browser console
407            $scope.comments = data; // for UI
408        })
409        .error(function(data, status, headers,config){
410            console.log('data error');
411        })
412        .then(function(result){
413            comments = result.data;
414    });
415
416    $scope.deleteTravel = function(){
417
418       var confirmPopup = $ionicPopup.confirm({
419         title: 'Deleting publication',
420         template: 'Are you sure you want to delete <b>'+ $scope.travel.title+'</b>?'
421       });
422       confirmPopup.then(function(res) {
423       if(res) {
424         console.log('You are sure');
425         console.log("delete travel: " + $stateParams.travelId);
426         $http({
427             url: urlapi + 'travels/' + $stateParams.travelId,
428             method: "DELETE"
429         })
430         .then(function(response) {
431                 console.log(response);
432         },
433         function(response) { // optional
434                 // failed
435         });
436       } else {
437         console.log('You are not sure');
438       }
439     });
440
441
442    };
443    $scope.joinTravel = function(){
444        $scope.newjoin={
445            //travelId: $stateParams.travelId,
446            joinedUserId: localStorage.getItem("c_userid"),
447            joinedUsername: localStorage.getItem("c_username"),
448            joinedAvatar: localStorage.getItem("c_avatar")
449        };
450        $http({
451            url: urlapi + 'travels/'+ $stateParams.travelId+'/join',
452            method: "POST",
453            data: $scope.newjoin
454        })
455        .then(function(response) {
456                // success
457                console.log("response: ");
458                console.log(response);
459
460                $scope.travels=response.data;
461                localStorage.setItem('c_travels', JSON.stringify($scope.travels));
462                localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
463                $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
464
465        },
466        function(response) { // optional
467                // failed
468        });
469    };
470    $scope.unjoinTravel = function(){
471        console.log("unjoin");
472        $scope.unjoin={
473            travelId: $stateParams.travelId,
474            joinedUserId: localStorage.getItem("c_userid"),
475            joinedUsername: localStorage.getItem("c_username"),
476            joinedAvatar: localStorage.getItem("c_avatar")
477        };
478        $http({
479            url: urlapi + 'travels/'+ $stateParams.travelId+'/unjoin',
480            method: "POST",
481            data: $scope.unjoin
482        })
483        .then(function(response) {
484                // success
485                console.log("response: ");
486                console.log(response);
487
488                $scope.travels=response.data;
489                localStorage.setItem('c_travels', JSON.stringify($scope.travels));
490                localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
491                $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
492
493        },
494        function(response) { // optional
495                // failed
496        });
497    };
498
499    /* adding comment */
500    $scope.doingNewComment=false;
501    $scope.newComment={};
502
503    $scope.showNewComment = function() {
504      $scope.doingNewComment=true;
505    };
506    $scope.closeNewComment = function() {
507        $scope.doingNewComment=false;
508    };
509    $scope.doNewComment = function() {
510        $scope.newComment.commentUserId=localStorage.getItem("c_userid");
511        $scope.newComment.commentUsername=localStorage.getItem("c_username");
512        $scope.newComment.commentAvatar=localStorage.getItem("c_avatar");
513console.log($scope.newComment);
514        $http({
515          url: urlapi + 'travels/'+ $stateParams.travelId+'/comment',
516          method: "POST",
517          data: $scope.newComment
518        })
519        .then(function(response) {
520              // success
521              console.log("newComment added to server: " + response);
522              console.log(response);
523              $scope.travels=response.data;
524              localStorage.setItem('c_travels', JSON.stringify($scope.travels));
525              localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
526              $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
527
528              if(response.data.success==false){
529
530                  $ionicLoading.show({ template: 'failed to generate new asking package', noBackdrop: true, duration: 2000 });
531              }
532        },
533        function(response) { // optional
534              // failed
535        });
536        $scope.closeNewComment();
537    };
538    console.log("a");
539    console.log($scope.storageusername);
540    console.log($scope.travel.owner);
541
542
543    $scope.arrayObjectIndexOf = function(myArray, searchTerm, property) {
544      //console.log(myArray+", "+searchTerm+", "+property);
545        if(myArray)
546        {
547            for(var i = 0, len = myArray.length; i < len; i++) {
548                if (myArray[i][property] === searchTerm){
549                    //console.log("i: " + i);
550                    return i;
551                }
552            }
553        }
554        //console.log("i: -1");
555        return -1;
556    }
557})
558
559.controller('UsersCtrl', function($scope, $http, $ionicModal, $timeout) {
560    $scope.users="";
561
562    $scope.users=JSON.parse(localStorage.getItem('c_users'));
563
564    $scope.doRefresh = function() {
565        $http.get(urlapi + 'users')
566        .success(function(data, status, headers, config){
567            console.log('data success');
568            console.log(data); // for browser console
569            $scope.users = data; // for UI
570            localStorage.setItem('c_users', JSON.stringify($scope.users));
571            $scope.$broadcast('scroll.refreshComplete');//refresher stop
572        })
573        .error(function(data, status, headers,config){
574            console.log('data error');
575            $scope.$broadcast('scroll.refreshComplete');//refresher stop
576        })
577        .then(function(result){
578            users = result.data;
579        });
580    };
581})
582
583.controller('UserCtrl', function($scope, $stateParams, $http) {
584    //$scope.user="";
585    console.log($stateParams.username);
586    $http.get(urlapi + 'users/byusername/'+$stateParams.username)
587        .success(function(data, status, headers,config){
588            console.log('data success');
589            console.log(data); // for browser console
590            $scope.user = data; // for UI
591        })
592        .error(function(data, status, headers,config){
593            console.log('data error');
594        })
595        .then(function(result){
596            user = result.data;
597    });
598
599    $http.get(urlapi + 'travels/user/'+$stateParams.username)
600        .success(function(data, status, headers,config){
601            console.log('data success');
602            console.log(data); // for browser console
603            $scope.travels = data; // for UI
604        })
605        .error(function(data, status, headers,config){
606            console.log('data error');
607        })
608        .then(function(result){
609            travels = result.data;
610    });
611})
612.controller('SettingsCtrl', function($scope, $stateParams, $translate) {
613  if(localStorage.getItem('lang'))//initialization
614  {
615    $scope.lang=localStorage.getItem('lang');
616  }else{
617    localStorage.setItem('lang', 'english');
618    $scope.lang=localStorage.getItem('lang');
619  }
620
621  $scope.langChange = function(lang){
622    console.log(lang);
623      window.localStorage.setItem('lang', lang);
624      $translate.use(lang);
625  };
626})
627.controller('HelpCtrl', function($scope, $stateParams, $translate) {
628  console.log("help page");
629});