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});
});
}
});