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/comment/' + $stateParams.travelId,
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              if(response.data.success==false){
524
525                  $ionicLoading.show({ template: 'failed to generate new asking package', noBackdrop: true, duration: 2000 });
526              }
527        },
528        function(response) { // optional
529              // failed
530        });
531        $scope.closeNewComment();
532    };
533    console.log("a");
534    console.log($scope.storageusername);
535    console.log($scope.travel.owner);
536
537
538    $scope.arrayObjectIndexOf = function(myArray, searchTerm, property) {
539      //console.log(myArray+", "+searchTerm+", "+property);
540        if(myArray)
541        {
542            for(var i = 0, len = myArray.length; i < len; i++) {
543                if (myArray[i][property] === searchTerm){
544                    //console.log("i: " + i);
545                    return i;
546                }
547            }
548        }
549        //console.log("i: -1");
550        return -1;
551    }
552})
553
554.controller('UsersCtrl', function($scope, $http, $ionicModal, $timeout) {
555    $scope.users="";
556
557    $scope.users=JSON.parse(localStorage.getItem('c_users'));
558
559    $scope.doRefresh = function() {
560        $http.get(urlapi + 'users')
561        .success(function(data, status, headers, config){
562            console.log('data success');
563            console.log(data); // for browser console
564            $scope.users = data; // for UI
565            localStorage.setItem('c_users', JSON.stringify($scope.users));
566            $scope.$broadcast('scroll.refreshComplete');//refresher stop
567        })
568        .error(function(data, status, headers,config){
569            console.log('data error');
570            $scope.$broadcast('scroll.refreshComplete');//refresher stop
571        })
572        .then(function(result){
573            users = result.data;
574        });
575    };
576})
577
578.controller('UserCtrl', function($scope, $stateParams, $http) {
579    //$scope.user="";
580    console.log($stateParams.username);
581    $http.get(urlapi + 'users/byusername/'+$stateParams.username)
582        .success(function(data, status, headers,config){
583            console.log('data success');
584            console.log(data); // for browser console
585            $scope.user = data; // for UI
586        })
587        .error(function(data, status, headers,config){
588            console.log('data error');
589        })
590        .then(function(result){
591            user = result.data;
592    });
593
594    $http.get(urlapi + 'travels/user/'+$stateParams.username)
595        .success(function(data, status, headers,config){
596            console.log('data success');
597            console.log(data); // for browser console
598            $scope.travels = data; // for UI
599        })
600        .error(function(data, status, headers,config){
601            console.log('data error');
602        })
603        .then(function(result){
604            travels = result.data;
605    });
606})
607.controller('SettingsCtrl', function($scope, $stateParams, $translate) {
608  if(localStorage.getItem('lang'))//initialization
609  {
610    $scope.lang=localStorage.getItem('lang');
611  }else{
612    localStorage.setItem('lang', 'english');
613    $scope.lang=localStorage.getItem('lang');
614  }
615
616  $scope.langChange = function(lang){
617    console.log(lang);
618      window.localStorage.setItem('lang', lang);
619      $translate.use(lang);
620  };
621})
622.controller('HelpCtrl', function($scope, $stateParams, $translate) {
623  console.log("help page");
624});