angular.module('luticate') .controller('UsersController', ['$scope', '$state', 'luticateAuthUsers', 'dialogs', '$q', 'luticateDialogErrorHelper', function($scope, $state, luticateAuthUsers, dialogs, $q, luticateDialogErrorHelper) { $scope.page = 0; $scope.perPage = 15; $scope.users = []; $scope.pages = []; $scope.selectedUsers = []; var promiseLoadUsers = { id: "promiseLoadUsers", groups: ['userList'] }; var promiseDelUsers = { id: "promiseDelUsers", loadGroups: ['userList'] }; $scope.loadPage = function(page) { luticateAuthUsers.getAll({page: page, perPage: $scope.perPage}, promiseLoadUsers) .then(function(users) { $scope.page = page; $scope.users = users; $scope.pages = []; var start = Math.max(0, $scope.page - 5); var end = Math.min(start + 10, (users.Count / $scope.perPage) + (users.Count % $scope.perPage == 0 ? -1 : 0)); for (var i = start; i < end; ++i) { $scope.pages.push(i); } }, function(error) { }); }; $scope.displayUser = function(user) { dialogs.create('views/modals/useredit.html', 'UserEditController', user) .result.then(function (data) { $scope.loadPage($scope.page); }); }; $scope.removeUsers = function() { if ($scope.selectedUsers.length == 0) { $scope.loadPage($scope.page); return; } luticateAuthUsers.del({user_id: $scope.selectedUsers[0]}, promiseDelUsers) .then(function(data) { $scope.selectedUsers.splice(0, 1); $scope.removeUsers(); }, function(error) { luticateDialogErrorHelper.errorDialog(error) .result.then(function(data) { $scope.loadPage($scope.page); }, function(error) {}); }); }; $scope.addUser = function() { dialogs.create('views/modals/useredit.html', 'UserEditController', null) .result.then(function (data) { $scope.loadPage($scope.page); }); }; $scope.toggleSelectedUser = function(id) { var idx = $scope.selectedUsers.indexOf(id); if (idx > -1) { $scope.selectedUsers.splice(idx, 1); } else { $scope.selectedUsers.push(id); } }; $scope.toggleSelectAll = function() { if ($scope.selectedUsers.length == $scope.users.Data.length) { $scope.selectedUsers = []; } else { $scope.selectedUsers = []; for (var i = 0; i < $scope.users.Data.length; ++i) { $scope.selectedUsers.push($scope.users.Data[i].Id); } } }; $scope.loadPage($scope.page); }]);