arnaucube
arnaucube/commonroutesAppPublic Self-hosted repository
commonroutesApp/www/js/controllers.js
www/js/controllers.jsRaw
  1
  2//var urlapi="http://localhost:3000/api/";
  3var 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
464        },
465        function(response) { // optional
466                // failed
467        });
468    };
469    $scope.unjoinTravel = function(){
470        console.log("unjoin");
471        $scope.unjoin={
472            travelId: $stateParams.travelId,
473            joinedUserId: localStorage.getItem("c_userid"),
474            joinedUsername: localStorage.getItem("c_username"),
475            joinedAvatar: localStorage.getItem("c_avatar")
476        };
477        $http({
478            url: urlapi + 'travels/'+ $stateParams.travelId+'/unjoin',
479            method: "POST",
480            data: $scope.unjoin
481        })
482        .then(function(response) {
483                // success
484                console.log("response: ");
485                console.log(response);
486
487                $scope.travels=response.data;
488                localStorage.setItem('c_travels', JSON.stringify($scope.travels));
489                localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
490
491        },
492        function(response) { // optional
493                // failed
494        });
495    };
496
497    /* adding comment */
498    $scope.doingNewComment=false;
499    $scope.newComment={};
500
501    $scope.showNewComment = function() {
502      $scope.doingNewComment=true;
503    };
504    $scope.closeNewComment = function() {
505        $scope.doingNewComment=false;
506    };
507    $scope.doNewComment = function() {
508        $scope.newComment.commentUserId=localStorage.getItem("c_userid");
509        $scope.newComment.commentUsername=localStorage.getItem("c_username");
510        $scope.newComment.commentAvatar=localStorage.getItem("c_avatar");
511console.log($scope.newComment);
512        $http({
513          url: urlapi + 'travels/comment/' + $stateParams.travelId,
514          method: "POST",
515          data: $scope.newComment
516        })
517        .then(function(response) {
518              // success
519              console.log("newComment added to server: " + response);
520              console.log(response);
521              if(response.data.success==false){
522
523                  $ionicLoading.show({ template: 'failed to generate new asking package', noBackdrop: true, duration: 2000 });
524              }
525        },
526        function(response) { // optional
527              // failed
528        });
529        $scope.closeNewComment();
530    };
531    console.log("a");
532    console.log($scope.storageusername);
533    console.log($scope.travel.owner);
534
535
536    $scope.arrayObjectIndexOf = function(myArray, searchTerm, property) {
537      //console.log(myArray+", "+searchTerm+", "+property);
538        if(myArray)
539        {
540            for(var i = 0, len = myArray.length; i < len; i++) {
541                if (myArray[i][property] === searchTerm){
542                    //console.log("i: " + i);
543                    return i;
544                }
545            }
546        }
547        //console.log("i: -1");
548        return -1;
549    }
550})
551
552.controller('UsersCtrl', function($scope, $http, $ionicModal, $timeout) {
553    $scope.users="";
554
555    $scope.users=JSON.parse(localStorage.getItem('c_users'));
556
557    $scope.doRefresh = function() {
558        $http.get(urlapi + 'users')
559        .success(function(data, status, headers, config){
560            console.log('data success');
561            console.log(data); // for browser console
562            $scope.users = data; // for UI
563            localStorage.setItem('c_users', JSON.stringify($scope.users));
564            $scope.$broadcast('scroll.refreshComplete');//refresher stop
565        })
566        .error(function(data, status, headers,config){
567            console.log('data error');
568            $scope.$broadcast('scroll.refreshComplete');//refresher stop
569        })
570        .then(function(result){
571            users = result.data;
572        });
573    };
574})
575
576.controller('UserCtrl', function($scope, $stateParams, $http) {
577    //$scope.user="";
578    console.log($stateParams.username);
579    $http.get(urlapi + 'users/byusername/'+$stateParams.username)
580        .success(function(data, status, headers,config){
581            console.log('data success');
582            console.log(data); // for browser console
583            $scope.user = data; // for UI
584        })
585        .error(function(data, status, headers,config){
586            console.log('data error');
587        })
588        .then(function(result){
589            user = result.data;
590    });
591
592    $http.get(urlapi + 'travels/user/'+$stateParams.username)
593        .success(function(data, status, headers,config){
594            console.log('data success');
595            console.log(data); // for browser console
596            $scope.travels = data; // for UI
597        })
598        .error(function(data, status, headers,config){
599            console.log('data error');
600        })
601        .then(function(result){
602            travels = result.data;
603    });
604}).controller('SettingsCtrl', function($scope, $stateParams, $translate) {
605  if(localStorage.getItem('lang'))//initialization
606  {
607    $scope.lang=localStorage.getItem('lang');
608  }else{
609    localStorage.setItem('lang', 'english');
610    $scope.lang=localStorage.getItem('lang');
611  }
612
613  $scope.langChange = function(lang){
614    console.log(lang);
615      window.localStorage.setItem('lang', lang);
616      $translate.use(lang);
617  };
618});