(function() { /** * Organization admin/settings page. */ angular.module('quayPages').config(['pages', function(pages) { pages.create('org-admin', 'org-admin.html', OrgAdminCtrl); }]); function OrgAdminCtrl($rootScope, $scope, $timeout, Restangular, $routeParams, UserService, PlanService, ApiService, Features, UIService) { var orgname = $routeParams.orgname; // Load the list of plans. if (Features.BILLING) { PlanService.getPlans(function(plans) { $scope.plans = plans; $scope.plan_map = {}; for (var i = 0; i < plans.length; ++i) { $scope.plan_map[plans[i].stripeId] = plans[i]; } }); } $scope.orgname = orgname; $scope.membersLoading = true; $scope.membersFound = null; $scope.invoiceLoading = true; $scope.logsShown = 0; $scope.invoicesShown = 0; $scope.applicationsShown = 0; $scope.changingOrganization = false; $scope.loadLogs = function() { $scope.logsShown++; }; $scope.loadApplications = function() { $scope.applicationsShown++; }; $scope.loadInvoices = function() { $scope.invoicesShown++; }; $scope.planChanged = function(plan) { $scope.hasPaidPlan = plan && plan.price > 0; }; $scope.$watch('organizationEmail', function(e) { UIService.hidePopover('#changeEmailForm'); }); $scope.changeEmail = function() { UIService.hidePopover('#changeEmailForm'); $scope.changingOrganization = true; var params = { 'orgname': orgname }; var data = { 'email': $scope.organizationEmail }; ApiService.changeOrganizationDetails(data, params).then(function(org) { $scope.changingOrganization = false; $scope.changeEmailForm.$setPristine(); $scope.organization = org; }, function(result) { $scope.changingOrganization = false; UIService.showFormError('#changeEmailForm', result); }); }; $scope.loadMembers = function() { if ($scope.membersFound) { return; } $scope.membersLoading = true; var params = { 'orgname': orgname }; ApiService.getOrganizationMembers(null, params).then(function(resp) { var membersArray = []; for (var key in resp.members) { if (resp.members.hasOwnProperty(key)) { membersArray.push(resp.members[key]); } } $scope.membersFound = membersArray; $scope.membersLoading = false; }); }; var loadOrganization = function() { $scope.orgResource = ApiService.getOrganizationAsResource({'orgname': orgname}).get(function(org) { if (org && org.is_admin) { $scope.organization = org; $scope.organizationEmail = org.email; $rootScope.title = orgname + ' (Admin)'; $rootScope.description = 'Administration page for organization ' + orgname; } }); }; // Load the organization. loadOrganization(); } })();