var membershipApp = angular.module('membershipApp', [ 'ngRoute', 'ngSanitize', 'ngAnimate', 'ui.bootstrap', 'ngCookies']);

membershipApp.config(function($routeProvider) {
    $routeProvider
        .when('/home', {
            controller : 'HomeController',
            templateUrl : 'partials/home.html'})                                                                      

        .when('/member/:memberId', {
            controller : 'MemberController',
            templateUrl : 'partials/member.html'})

        .when('/edit/member/:memberId/', {
            controller : 'MemberController',
            templateUrl : 'partials/member_edit.html'})    

        .when('/members/', {
            controller : 'MemberListController',
            templateUrl : 'partials/member_list.html'})        

        .when('/search/members/', {
            controller : 'MemberSearchController',
            templateUrl : 'partials/member_search.html'})                                                                     

        .when('/membership/:membershipId', {
            controller : 'MembershipController',
            templateUrl : 'partials/membership.html'})

        .when('/edit/membership/:membershipId/', {
            controller : 'MembershipController',
            templateUrl : 'partials/membership_edit.html'})    

        .when('/memberships/', {
            controller : 'MembershipListController',
            templateUrl : 'partials/membership_list.html'})

        .when('/privacy', {
            controller : 'GenericController',
            templateUrl : 'partials/privacy.html'})            
        .when('/terms', {
            controller : 'GenericController',
            templateUrl : 'partials/terms.html'})            
        .when('/about', {
            controller : 'GenericController',
            templateUrl : 'partials/about.html'})            

        .when('/login', {
            controller : 'AuthenticationController',
            templateUrl : 'partials/auth/login.html'})

        .when('/register', {
            controller : 'AuthenticationController',
            templateUrl : 'partials/auth/register.html'})

        .when('/forgot', {
            controller : 'AuthenticationController',
            templateUrl : 'partials/auth/forgot.html'})

        .when('/change-pass', {
            controller : 'AuthenticationController',
            templateUrl : 'partials/auth/change_pass.html'})            

        .otherwise({
            controller : 'HomeController',
            templateUrl : 'partials/not_found.html'});

});

membershipApp.run(function($rootScope, $cookies, membershipDataFactory) {
    $rootScope.title = "Membership";
    $rootScope.dateOptions = {
            formatYear: 'yy',
            startingDay: 1
        };
    $rootScope.format = 'MM/dd/yyyy';
});

membershipApp.filter('encodeURIComponent', function() {
    return window.encodeURIComponent;
});

membershipApp.directive('fileModel', ['$parse', function ($parse) {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            var model = $parse(attrs.fileModel);
            var modelSetter = model.assign;

            element.bind('change', function(){
                scope.$apply(function(){
                    modelSetter(scope, element[0].files[0]);
                });
            });
        }
    };
}]);

membershipApp.directive('confirm', [function () {
    return {
        priority: 100,
        restrict: 'A',
        link: {
            pre: function (scope, element, attrs) {
                var msg = attrs.confirm || "Are you sure?";

                element.bind('click', function (event) {
                    if (!confirm(msg)) {
                        event.stopImmediatePropagation();
                        event.preventDefault;
                    }
                });
            }
        }
    };
}]);

membershipApp.directive('back', ['$window', function($window) {
    return {
        restrict: 'A',
        link: function (scope, elem, attrs) {
            elem.bind('click', function () {
                $window.history.back();
            });
        }
    };
}]);

membershipApp.directive('convertToNumber', function() {
      return {
        require: 'ngModel',
        link: function(scope, element, attrs, ngModel) {
          ngModel.$parsers.push(function(val) {
            return val != null ? parseInt(val, 10) : null;
          });
          ngModel.$formatters.push(function(val) {
            return val != null ? '' + val : null;
          });
        }
      };
});

membershipApp.factory('membershipDataFactory', function($http) {
    var factory = {};
    var restRoot = 'resources/membership/';
    var restSecRoot = 'resources/security/';
    factory.getMemberList = function() {
        return $http.get(restRoot + 'members/');
    };
    factory.getPagedMemberList = function(pageNumber) {
        return $http.get(restRoot + 'members/page/' + pageNumber + '/item-count/10')
    };
    factory.searchMembers = function(pageNumber, criteria) {
        return $http.post(restRoot + 'members/page/' + pageNumber + '/item-count/10', criteria)
    };    
    factory.getMember = function(memberId) {
        return $http.get(restRoot + 'member/' + memberId);
    };
    factory.saveMember = function(member) {
        return $http.post(restRoot + 'member', member);
    };
    factory.deleteMember = function(memberId) {
        return $http.delete(restRoot + 'member/' + memberId);
    };
    factory.getMemberByEmailId = function(emailId) {
        return $http.get(restRoot + 'member/email_id/' + emailId);
    };
    factory.getMembershipList = function() {
        return $http.get(restRoot + 'memberships/');
    };
    factory.getPagedMembershipList = function(pageNumber) {
        return $http.get(restRoot + 'memberships/page/' + pageNumber + '/item-count/10')
    };    
    factory.getMembership = function(membershipId) {
        return $http.get(restRoot + 'membership/' + membershipId);
    };
    factory.saveMembership = function(membership) {
        return $http.post(restRoot + 'membership', membership);
    };
    factory.deleteMembership = function(membershipId) {
        return $http.delete(restRoot + 'membership/' + membershipId);
    };    
    factory.search = function(query) {
        return $http.post(restRoot + 'search', query);
    };

    factory.getLoggedUser = function() {
        return $http.get(restSecRoot + 'guest/user/loggedin');
    };
    factory.isLoggedIn = function() {
        return $http.get(restSecRoot + 'guest/loggedin');
    };
    factory.login = function(user) {
        return $http.post(restSecRoot + 'guest/login', user);
    };
    factory.logout = function() {
        return $http.post(restSecRoot + 'logout');
    };
    factory.register = function(user) {
        return $http.post(restSecRoot + 'user', user);
    };
    factory.forgotPassword = function(username) {
        return $http.post(restSecRoot + 'guest/forgot-password', username);
    };
    factory.resetPassword = function(resetInfo) {
        return $http.post(restSecRoot + 'guest/reset-password', resetInfo);
    };
    factory.changePassword = function(passwords) {
        return $http.post(restSecRoot + 'change-password', passwords);
    };

    return factory;
});

membershipApp.controller('GenericController', function($scope, $rootScope, $routeParams, appGenDataFactory, $filter) {

});

membershipApp.controller('HomeController', function($scope, $routeParams, membershipDataFactory, $filter) {
    $scope.alerts = [];
    $scope.closeAlert = function(index) {
        $scope.alerts.splice(index, 1);
    };
    $scope.myInterval = 5000;
    $scope.noWrapSlides = false;
    $scope.active = 0;
    $scope.slides = [];

    $scope.slides.push( {id: 0, image: "images/carousel_0.jpg", text: "Image 0"})
    $scope.slides.push( {id: 1, image: "images/carousel_1.jpg", text: "Image 1"})
    $scope.slides.push( {id: 2, image: "images/carousel_2.jpg", text: "Image 2"})
    $scope.slides.push( {id: 3, image: "images/carousel_3.jpg", text: "Image 3"})    
});

membershipApp.controller('MemberController', function($scope, $routeParams, membershipDataFactory, $filter, $window) {
    $scope.alerts = [];
    $scope.closeAlert = function(index) {
            $scope.alerts.splice(index, 1);
    };

    $scope.member = {}; 
    $scope.dateOfBirthCal = {opened: false};
    $scope.openCalDateOfBirth = function() {
        $scope.dateOfBirthCal.opened = true;
    };


    $scope.genders = [{staticCode:'M', staticValue:'Male'},{staticCode:'F', staticValue:'Female'},{staticCode:'U', staticValue:'Unknow'},]
      $scope.setGendersValue = function(lookupCode) {
          for (i = 0; i < $scope.genders.length; i++) {
              if ($scope.genders[i].staticCode == lookupCode) {  
                  $scope.gender = $scope.genders[i].staticValue;
                  break;
              }
          }
      }

    if ($routeParams.memberId && $routeParams.memberId != 'new') {
        $scope.memberId = $routeParams.memberId
        membershipDataFactory.getMember($scope.memberId).then(
            function(response) { 
                $scope.member = response.data;   
                if ($scope.member.dateOfBirth) { $scope.member.dateOfBirth = new Date($scope.member.dateOfBirth)}; 
                if ($scope.member.gender) { $scope.setGendersValue($scope.member.gender)};         
            }, 
            function(response) { 
                $scope.alerts.push({type: 'danger', msg: response.data});
        });    }

    $scope.saveMember = function() {
        membershipDataFactory.saveMember($scope.member).then(
            function(response) {
                window.history.back();
            }, 
            function(response) {
                $scope.alerts.push({type: 'danger', msg: response.data});
            });
    };
    $scope.deleteMember = function(memberId) {
        membershipDataFactory.deleteMember($scope.memberId).then(
            function(response) {
                window.history.back();}, 
            function(response) {
                $scope.alerts.push({type: 'danger', msg: response.data});
            });
    };
});

membershipApp.controller('MemberListController', function($scope, $routeParams, membershipDataFactory, $filter) {
    $scope.alerts = [];
    $scope.closeAlert = function(index) {
            $scope.alerts.splice(index, 1);
    };

    membershipDataFactory.getPagedMemberList(1).then(
        function(response) { 
            $scope.members = response.data.members; 
            $scope.totalItems = response.data.totalCount}, 
        function(response) { 
            $scope.alerts.push({type: 'danger', msg: response.data});
    });

    $scope.currentPage = 1;

    $scope.pageChanged = function() {
        membershipDataFactory.getPagedMemberList($scope.currentPage).then(
            function(response) { 
                $scope.members = response.data.members;
                $scope.totalItems = response.data.totalCount}, 
            function(response) { 
                $scope.alerts.push({type: 'danger', msg: response.data});
        });
    };

    $scope.deleteMember = function(memberId) {
        membershipDataFactory.deleteMember(memberId).then(
            function(response) {
                membershipDataFactory.getMemberList().then(
                    function(response) { 
                        $scope.members = response.data;}, 
                    function(response) { 
                        $scope.alerts.push({type: 'danger', msg: response.data});
                });
            }, 
            function(response) {
                $scope.alerts.push({type: 'danger', msg: response.data});
            });
    };
});

membershipApp.controller('MemberSearchController', function($scope, $routeParams, membershipDataFactory, $filter) {
    $scope.alerts = [];
    $scope.closeAlert = function(index) {
            $scope.alerts.splice(index, 1);
    };

    $scope.currentPage = 1;
    $scope.firstName = {fieldName: 'firstName', condition: '=', fieldType: 'String'}
    $scope.lastName = {fieldName: 'lastName', condition: '=', fieldType: 'String'}
    $scope.dateOfBirth = {fieldName: 'dateOfBirth', condition: '=', fieldType: 'Date'}
    $scope.phoneNumber = {fieldName: 'phoneNumber', condition: '=', fieldType: 'String'}
    $scope.emailId = {fieldName: 'emailId', condition: '=', fieldType: 'String'}

    $scope.pageChanged = function() {
        membershipDataFactory.searchMembers($scope.currentPage, $scope.search).then(
            function(response) { 
                $scope.members = response.data.members;
                $scope.totalItems = response.data.totalCount}, 
            function(response) { 
                $scope.alerts.push({type: 'danger', msg: response.data});
        });
    };

    $scope.deleteMember = function(memberId) {
        membershipDataFactory.deleteMember($filter(memberId).then(
            function(response) {
                membershipDataFactory.getMemberList().then(
                    function(response) { 
                        $scope.members = response.data;}, 
                    function(response) { 
                        $scope.alerts.push({type: 'danger', msg: response.data});
                });
            }, 
            function(response) {
                $scope.alerts.push({type: 'danger', msg: response.data});
            }));
    };

    $scope.searchMember = function() {
        $scope.search = []
        if ($scope.firstName.value) {$scope.search.push($scope.firstName)}
        if ($scope.lastName.value) {$scope.search.push($scope.lastName)}
        if ($scope.dateOfBirth.value) {$scope.search.push($scope.dateOfBirth)}
        if ($scope.phoneNumber.value) {$scope.search.push($scope.phoneNumber)}
        if ($scope.emailId.value) {$scope.search.push($scope.emailId)}
        membershipDataFactory.searchMembers(1, $scope.search).then(
                function(response) { 
                    $scope.members = response.data.members; 
                    $scope.totalItems = response.data.totalCount}, 
                function(response) { 
                    $scope.alerts.push({type: 'danger', msg: response.data});
            });
    };
});
membershipApp.controller('MembershipController', function($scope, $routeParams, membershipDataFactory, $filter, $window) {
    $scope.alerts = [];
    $scope.closeAlert = function(index) {
            $scope.alerts.splice(index, 1);
    };

    $scope.membership = {}; 
    $scope.dateCal = {opened: false};
    $scope.openCalDate = function() {
        $scope.dateCal.opened = true;
    };


    if ($routeParams.membershipId && $routeParams.membershipId != 'new') {
        $scope.membershipId = $routeParams.membershipId
        membershipDataFactory.getMembership($scope.membershipId).then(
            function(response) { 
                $scope.membership = response.data;    
                if ($scope.membership.type) { $scope.setMembershipTypeValue($scope.membership.type)};  
            }, 
            function(response) { 
                $scope.alerts.push({type: 'danger', msg: response.data});
        });    }

    $scope.saveMembership = function() {
        membershipDataFactory.saveMembership($scope.membership).then(
            function(response) {
                window.history.back();
            }, 
            function(response) {
                $scope.alerts.push({type: 'danger', msg: response.data});
            });
    };
    $scope.deleteMembership = function(membershipId) {
        membershipDataFactory.deleteMembership($scope.membershipId).then(
            function(response) {
                window.history.back();}, 
            function(response) {
                $scope.alerts.push({type: 'danger', msg: response.data});
            });
    };
});

membershipApp.controller('MembershipListController', function($scope, $routeParams, membershipDataFactory, $filter) {
    $scope.alerts = [];
    $scope.closeAlert = function(index) {
            $scope.alerts.splice(index, 1);
    };

    membershipDataFactory.getPagedMembershipList(1).then(
        function(response) { 
            $scope.memberships = response.data.memberships; 
            $scope.totalItems = response.data.totalCount}, 
        function(response) { 
            $scope.alerts.push({type: 'danger', msg: response.data});
    });

    $scope.currentPage = 1;

    $scope.pageChanged = function() {
        membershipDataFactory.getPagedMembershipList($scope.currentPage).then(
            function(response) { 
                $scope.memberships = response.data.memberships;
                $scope.totalItems = response.data.totalCount}, 
            function(response) { 
                $scope.alerts.push({type: 'danger', msg: response.data});
        });
    };

    $scope.deleteMembership = function(membershipId) {
        membershipDataFactory.deleteMembership(membershipId).then(
            function(response) {
                membershipDataFactory.getMembershipList().then(
                    function(response) { 
                        $scope.memberships = response.data;}, 
                    function(response) { 
                        $scope.alerts.push({type: 'danger', msg: response.data});
                });
            }, 
            function(response) {
                $scope.alerts.push({type: 'danger', msg: response.data});
            });
    };
});

membershipApp.controller('LoginController', function($scope, membershipDataFactory, $rootScope, $window) {
    $scope.alerts = [];
    $scope.closeAlert = function(index) {
        $scope.alerts.splice(index, 1);
    };
    $rootScope.isLoggedIn = false;
    $scope.user = {};
    $scope.errors = {}
    membershipDataFactory.getLoggedUser().then(
        function(response) { 
            $rootScope.loggedinUser = response.data;
            if ($rootScope.loggedinUser) {
                $rootScope.isLoggedIn = true;
            } else {
                $rootScope.isLoggedIn = false;
        }}, 
        function(response) { 
            $scope.alerts.push({type: 'danger', msg: response.data});
    });
    $scope.logout = function() {
        membershipDataFactory.logout().then(
            function(response) {
                $rootScope.isLoggedIn = false;
            }, 
            function(response) { 
                $scope.alerts.push({type: 'danger', msg: response.data});
        });
    }
    $scope.login = function() {
        if (!($scope.user.name && $scope.user.password)) {
            $window.location.href = '#/login';
        } else {
            usr = {}
            usr.name = $scope.user.name;
            usr.password = $scope.user.password;
            membershipDataFactory.login(usr).then(
                function(response) {
                    $rootScope.isLoggedIn = true;
                }, 
                function(response) { 
                    $window.location.href = '#/login?username=' + usr.name + '&error=true' ;
            });
        }
    }
});

membershipApp.controller('PageController', function($scope, membershipDataFactory, $filter, $rootScope) {
    $scope.alerts = [];
    $scope.closeAlert = function(index) {
            $scope.alerts.splice(index, 1);
    };

});

membershipApp.controller('AuthenticationController', function($scope, membershipDataFactory, $filter, $rootScope) {
    $scope.alerts = [];
    $scope.closeAlert = function(index) {
            $scope.alerts.splice(index, 1);
    };
    $scope.login = function() {
        user = {};
        user.name = $scope.username;
        user.password = $scope.password;
        membershipDataFactory.login(user).then(
            function(response) { 
                $rootScope.isLoggedIn = true;
                window.history.back();
                }, 
            function(response) { 
                $scope.alerts.push({type: 'danger', msg: response.data});
        });
    }
    $scope.logout = function() {
        membershipDataFactory.logout().then(
            function(response) {}, 
            function(response) { 
                $scope.alerts.push({type: 'danger', msg: response.data});
        });
    }
    $scope.saveUser = function() {
        $scope.user.password = $scope.user.password;
        membershipDataFactory.register($scope.user).then(
            function(response) { 
                window.history.back();
                }, 
            function(response) { 
                $scope.alerts.push({type: 'danger', msg: response.data});
        });
    }
    $scope.forgotPassword = function() {
        membershipDataFactory.forgotPassword($scope.username).then(
            function(response) { 
                }, 
            function(response) { 
                $scope.alerts.push({type: 'danger', msg: response.data});
        });
    }
    $scope.changePassword = function() {
        passwords = {} 
        if ($scope.newPassword1 != $scope.newPassword2) {
            $scope.alerts.push({type: 'danger', msg: "Passwords dont match"});
            return
        }
        passwords.oldPassword = $scope.oldPassword;
        passwords.newPassword = $scope.newPassword1;

        membershipDataFactory.changePassword(passwords).then(
            function(response) { 
                }, 
            function(response) { 
                $scope.alerts.push({type: 'danger', msg: response.data});
        });
    }

});

results matching ""

    No results matching ""