-/*-\r
- * ================================================================================\r
- * ECOMP Portal\r
- * ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ================================================================================\r
- */\r
-/**\r
- * Created by nnaffar on 12/20/15.\r
- */\r
-'use strict';\r
-(function () {\r
- class NewUserModalCtrl {\r
- constructor($scope, $log, usersService, applicationsService, confirmBoxService) {\r
- let init = () => {\r
- //$log.info('NewUserModalCtrl::init');\r
- this.isSaving = false;\r
- this.anyChanges = false;\r
- this.adminApps = [];\r
- this.isGettingAdminApps = false;\r
- if($scope.ngDialogData && $scope.ngDialogData.selectedUser && $scope.ngDialogData.dialogState){\r
- this.selectedUser = $scope.ngDialogData.selectedUser;\r
- this.dialogState = $scope.ngDialogData.dialogState;\r
- this.isShowBack = false;\r
- if(this.dialogState === 3){\r
- this.getUserAppsRoles();\r
- }\r
- }else{\r
- this.isShowBack = true;\r
- this.selectedUser = null;\r
- this.dialogState = 1;\r
- }\r
- };\r
-\r
- this.appChanged = (index) => {\r
- let myApp = this.adminApps[index];\r
- //$log.debug('NewUserModalCtrl::appChanged: index: ', index, '; app id: ', myApp.id, 'app name: ',myApp.name);\r
- myApp.isChanged = true;\r
- this.anyChanges = true;\r
- }\r
-\r
- this.deleteApp = (app) => {\r
- let appMessage = this.selectedUser.firstName + ' ' + this.selectedUser.lastName;\r
- confirmBoxService.deleteItem(appMessage).then(isConfirmed => {\r
- if(isConfirmed){\r
- this.anyChanges = true;\r
- app.isChanged = true;\r
- app.isDeleted = true; // use this to hide the app in the display\r
- app.appRoles.forEach(function(role){\r
- role.isApplied = false;\r
- });\r
- }\r
- }).catch(err => {\r
- $log.error('NewUserModalCtrl::deleteApp error: ',err);\r
- confirmBoxService.showInformation('There was a problem deleting the the applications. ' +\r
- 'Please try again later. Error: ' + err.status).then(isConfirmed => {});\r
- });\r
- };\r
-\r
- this.getUserAppsRoles = () => {\r
- if (!this.selectedUser || !this.selectedUser.orgUserId) {\r
- $log.error('NewUserModalCtrl::getUserAppsRoles error: No user is selected');\r
- this.dialogState = 1;\r
- return;\r
- }\r
- //$log.debug('NewUserModalCtrl::getUserAppsRoles: about to call getAdminAppsSimpler');\r
- this.isGettingAdminApps = true;\r
- applicationsService.getAdminAppsSimpler().then((apps) => {\r
- //$log.debug('NewUserModalCtrl::getUserAppsRoles: beginning of then for getAdminAppsSimpler');\r
- this.isGettingAdminApps = false;\r
- if (!apps || !apps.length) {\r
- $log.error('NewUserModalCtrl::getUserAppsRoles error: no admin apps found');\r
- return null;\r
- }\r
- //$log.debug('NewUserModalCtrl::getUserAppsRoles: then for getAdminAppsSimpler: step 2');\r
- //$log.debug('NewUserModalCtrl::getUserAppsRoles: admin apps: ', apps);\r
- this.adminApps = apps;\r
- this.dialogState = 3;\r
- this.userAppRoles = {};\r
- this.numberAppsProcessed = 0;\r
- this.isLoading = true;\r
- apps.forEach(app => {\r
- //$log.debug('NewUserModalCtrl::getUserAppsRoles: app: id: ', app.id, 'name: ',app.name);\r
- // Keep track of which app has changed, so we know which apps to update using a BE API\r
- app.isChanged = false;\r
- // Each of these specifies a state, which corresponds to a different message and style that gets displayed\r
- app.isLoading = true;\r
- app.isError = false;\r
- app.isDeleted = false;\r
- app.printNoChanges = false;\r
- app.isUpdating = false;\r
- app.isErrorUpdating = false;\r
- app.isDoneUpdating = false;\r
- app.errorMessage = "";\r
- usersService.getUserAppRoles(app.id, this.selectedUser.orgUserId).promise().then((userAppRolesResult) => {\r
- //$log.debug('NewUserModalCtrl::getUserAppsRoles: got a result for app: ',app.id,': ',app.name,': ',userAppRolesResult);\r
- app.appRoles = userAppRolesResult;\r
- app.isLoading = false;\r
-\r
- }).catch(err => {\r
- $log.error(err);\r
- app.isError = true;\r
- app.isLoading = false;\r
- app.errorMessage = err.headers('FEErrorString');\r
- //$log.debug('NewUserModalCtrl::getUserAppsRoles: in new-user.controller: response header: '+err.headers('FEErrorString'));\r
- }).finally(()=>{\r
- this.numberAppsProcessed++;\r
- if (this.numberAppsProcessed === this.adminApps.length) {\r
- this.isLoading = false;\r
- }\r
- });\r
- })\r
- return;\r
- }).catch(err => {\r
- $log.error(err);\r
- })\r
-\r
- }\r
-\r
- /**\r
- * Update the selected user apps with the new roles.\r
- * If no roles remain, set the user to inactive.\r
- */\r
- this.updateUserAppsRoles = () => {\r
- // $log.debug('NewUserModalCtrl::updateUserAppsRoles: entering updateUserAppsRoles');\r
- if(!this.selectedUser || !this.selectedUser.orgUserId || !this.adminApps){\r
- $log.error('NewUserModalCtrl::updateUserAppsRoles: mmissing arguments');\r
- return;\r
- }\r
- this.isSaving = true;\r
- //$log.debug('NewUserModalCtrl::updateUserAppsRoles: going to update user: ' + this.selectedUser.orgUserId);\r
- this.numberAppsProcessed = 0;\r
- this.numberAppsSucceeded = 0;\r
- this.adminApps.forEach(app => {\r
- if (app.isChanged) {\r
- //$log.debug('NewUserModalCtrl::updateUserAppsRoles: app roles have changed; going to update: id: ', app.id, '; name: ', app.name);\r
- app.isUpdating = true;\r
- var newUserAppRoles = {\r
- orgUserId: this.selectedUser.orgUserId,\r
- appId: app.id, \r
- appRoles: app.appRoles,\r
- appName: app.name\r
- }; \r
- usersService.updateUserAppRoles(newUserAppRoles).promise()\r
- .then(res => {\r
- //$log.debug('NewUserModalCtrl::updateUserAppsRoles: User app roles updated successfully on app: ',app.id);\r
- app.isUpdating = false;\r
- app.isDoneUpdating = true;\r
- this.numberAppsSucceeded++;\r
- }).catch(err => {\r
- $log.error(err);\r
- app.isErrorUpdating = true;\r
- confirmBoxService.showInformation(\r
- 'Failed to update the user application roles: ' + err.status)\r
- .then(isConfirmed => {});\r
- }).finally(()=>{\r
- this.numberAppsProcessed++;\r
- if (this.numberAppsProcessed === this.adminApps.length) {\r
- this.isSaving = false; // hide the spinner\r
- }\r
- if (this.numberAppsSucceeded === this.adminApps.length) {\r
- $scope.closeThisDialog(true);//close and resolve dialog promise with true (to update the table)\r
- }\r
- })\r
- } else {\r
- //$log.debug('NewUserModalCtrl::updateUserAppsRoles: app roles have NOT changed; NOT going to update: id: ', app.id, '; name: ', app.name);\r
- app.noChanges = true;\r
- app.isError = false; //remove the error message; just show the No Changes messages\r
- this.numberAppsProcessed++;\r
- this.numberAppsSucceeded++;\r
- if (this.numberAppsProcessed === this.adminApps.length) {\r
- this.isSaving = false; // hide the spinner\r
- }\r
- if (this.numberAppsSucceeded === this.adminApps.length) {\r
- $scope.closeThisDialog(true);//close and resolve dialog promise with true (to update the table)\r
- }\r
- }\r
- });\r
- };\r
-\r
- /**\r
- * Navigate between dialog screens using step number: 1,2,...\r
- */\r
- this.navigateBack = () => {\r
- if (this.dialogState === 1) {\r
- //back from 1st screen?\r
- }\r
- if (this.dialogState === 3) {\r
- this.dialogState = 1;\r
- }\r
- };\r
-\r
- init();\r
-\r
- $scope.$on('$stateChangeStart', e => {\r
- //Disable navigation when modal is opened\r
- //**Nabil - note: this will cause the history back state to be replaced with current state\r
- e.preventDefault();\r
- });\r
- }\r
- }\r
- NewUserModalCtrl.$inject = ['$scope', '$log', 'usersService', 'applicationsService', 'confirmBoxService'];\r
- angular.module('ecompApp').controller('NewUserModalCtrl', NewUserModalCtrl);\r
-})();\r
+/*-
+ * ================================================================================
+ * ECOMP Portal
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+/**
+ * Created by nnaffar on 12/20/15.
+ */
+'use strict';
+(function () {
+ class NewUserModalCtrl {
+ constructor($scope, $log, usersService, applicationsService, confirmBoxService) {
+ var extRequestValue = false;
+ let init = () => {
+ //$log.info('NewUserModalCtrl::init');
+ this.isSaving = false;
+ this.anyChanges = false;
+ this.adminApps = [];
+ this.isGettingAdminApps = false;
+ if($scope.ngDialogData && $scope.ngDialogData.selectedUser && $scope.ngDialogData.dialogState){
+ this.selectedUser = $scope.ngDialogData.selectedUser;
+ this.dialogState = $scope.ngDialogData.dialogState;
+ this.isShowBack = false;
+ if(this.dialogState === 3){
+ this.getUserAppsRoles();
+ }
+ }else{
+ this.isShowBack = true;
+ this.selectedUser = null;
+ this.dialogState = 1;
+ }
+ };
+
+ this.appChanged = (index) => {
+ let myApp = this.adminApps[index];
+ //$log.debug('NewUserModalCtrl::appChanged: index: ', index, '; app id: ', myApp.id, 'app name: ',myApp.name);
+ myApp.isChanged = true;
+ this.anyChanges = true;
+ }
+
+ this.deleteApp = (app) => {
+ let appMessage = this.selectedUser.firstName + ' ' + this.selectedUser.lastName;
+ confirmBoxService.deleteItem(appMessage).then(isConfirmed => {
+ if(isConfirmed){
+ this.anyChanges = true;
+ app.isChanged = true;
+ app.isDeleted = true; // use this to hide the app in the display
+ app.appRoles.forEach(function(role){
+ role.isApplied = false;
+ });
+ }
+ }).catch(err => {
+ $log.error('NewUserModalCtrl::deleteApp error: ',err);
+ confirmBoxService.showInformation('There was a problem deleting the the applications. ' +
+ 'Please try again later. Error: ' + err.status).then(isConfirmed => {});
+ });
+ };
+
+ this.getUserAppsRoles = () => {
+ if (!this.selectedUser || !this.selectedUser.orgUserId) {
+ $log.error('NewUserModalCtrl::getUserAppsRoles error: No user is selected');
+ this.dialogState = 1;
+ return;
+ }
+ //$log.debug('NewUserModalCtrl::getUserAppsRoles: about to call getAdminAppsSimpler');
+ this.isGettingAdminApps = true;
+ applicationsService.getAdminAppsSimpler().then((apps) => {
+ //$log.debug('NewUserModalCtrl::getUserAppsRoles: beginning of then for getAdminAppsSimpler');
+ this.isGettingAdminApps = false;
+ if (!apps || !apps.length) {
+ $log.error('NewUserModalCtrl::getUserAppsRoles error: no admin apps found');
+ return null;
+ }
+ //$log.debug('NewUserModalCtrl::getUserAppsRoles: then for getAdminAppsSimpler: step 2');
+ //$log.debug('NewUserModalCtrl::getUserAppsRoles: admin apps: ', apps);
+ this.adminApps = apps;
+ this.dialogState = 3;
+ this.userAppRoles = {};
+ this.numberAppsProcessed = 0;
+ this.isLoading = true;
+ apps.forEach(app => {
+ //$log.debug('NewUserModalCtrl::getUserAppsRoles: app: id: ', app.id, 'name: ',app.name);
+ // Keep track of which app has changed, so we know which apps to update using a BE API
+ app.isChanged = false;
+ // Each of these specifies a state, which corresponds to a different message and style that gets displayed
+ app.isLoading = true;
+ app.isError = false;
+ app.isDeleted = false;
+ app.printNoChanges = false;
+ app.isUpdating = false;
+ app.isErrorUpdating = false;
+ app.isDoneUpdating = false;
+ app.errorMessage = "";
+ usersService.getUserAppRoles(app.id, this.selectedUser.orgUserId, extRequestValue).promise().then((userAppRolesResult) => {
+ //$log.debug('NewUserModalCtrl::getUserAppsRoles: got a result for app: ',app.id,': ',app.name,': ',userAppRolesResult);
+ app.appRoles = userAppRolesResult;
+ app.isLoading = false;
+
+ }).catch(err => {
+ $log.error(err);
+ app.isError = true;
+ app.isLoading = false;
+ app.errorMessage = err.headers('FEErrorString');
+ //$log.debug('NewUserModalCtrl::getUserAppsRoles: in new-user.controller: response header: '+err.headers('FEErrorString'));
+ }).finally(()=>{
+ this.numberAppsProcessed++;
+ if (this.numberAppsProcessed === this.adminApps.length) {
+ this.isLoading = false;
+ }
+ });
+ })
+ return;
+ }).catch(err => {
+ $log.error(err);
+ })
+
+ }
+
+ /**
+ * Update the selected user apps with the new roles.
+ * If no roles remain, set the user to inactive.
+ */
+ this.updateUserAppsRoles = () => {
+ // $log.debug('NewUserModalCtrl::updateUserAppsRoles: entering updateUserAppsRoles');
+ if(!this.selectedUser || !this.selectedUser.orgUserId || !this.adminApps){
+ $log.error('NewUserModalCtrl::updateUserAppsRoles: mmissing arguments');
+ return;
+ }
+ this.isSaving = true;
+ //$log.debug('NewUserModalCtrl::updateUserAppsRoles: going to update user: ' + this.selectedUser.orgUserId);
+ this.numberAppsProcessed = 0;
+ this.numberAppsSucceeded = 0;
+ this.adminApps.forEach(app => {
+ if (app.isChanged) {
+ //$log.debug('NewUserModalCtrl::updateUserAppsRoles: app roles have changed; going to update: id: ', app.id, '; name: ', app.name);
+ app.isUpdating = true;
+ var newUserAppRoles = {
+ orgUserId: this.selectedUser.orgUserId,
+ appId: app.id,
+ appRoles: app.appRoles,
+ appName: app.name
+ };
+ usersService.updateUserAppRoles(newUserAppRoles).promise()
+ .then(res => {
+ //$log.debug('NewUserModalCtrl::updateUserAppsRoles: User app roles updated successfully on app: ',app.id);
+ app.isUpdating = false;
+ app.isDoneUpdating = true;
+ this.numberAppsSucceeded++;
+ }).catch(err => {
+ $log.error(err);
+ app.isErrorUpdating = true;
+ confirmBoxService.showInformation(
+ 'Failed to update the user application roles: ' + err.status)
+ .then(isConfirmed => {});
+ }).finally(()=>{
+ this.numberAppsProcessed++;
+ if (this.numberAppsProcessed === this.adminApps.length) {
+ this.isSaving = false; // hide the spinner
+ }
+ if (this.numberAppsSucceeded === this.adminApps.length) {
+ $scope.closeThisDialog(true);//close and resolve dialog promise with true (to update the table)
+ }
+ })
+ } else {
+ //$log.debug('NewUserModalCtrl::updateUserAppsRoles: app roles have NOT changed; NOT going to update: id: ', app.id, '; name: ', app.name);
+ app.noChanges = true;
+ app.isError = false; //remove the error message; just show the No Changes messages
+ this.numberAppsProcessed++;
+ this.numberAppsSucceeded++;
+ if (this.numberAppsProcessed === this.adminApps.length) {
+ this.isSaving = false; // hide the spinner
+ }
+ if (this.numberAppsSucceeded === this.adminApps.length) {
+ $scope.closeThisDialog(true);//close and resolve dialog promise with true (to update the table)
+ }
+ }
+ });
+ };
+
+ /**
+ * Navigate between dialog screens using step number: 1,2,...
+ */
+ this.navigateBack = () => {
+ if (this.dialogState === 1) {
+ //back from 1st screen?
+ }
+ if (this.dialogState === 3) {
+ this.dialogState = 1;
+ }
+ };
+
+ init();
+
+ $scope.$on('$stateChangeStart', e => {
+ //Disable navigation when modal is opened
+ //**Nabil - note: this will cause the history back state to be replaced with current state
+ e.preventDefault();
+ });
+ }
+ }
+ NewUserModalCtrl.$inject = ['$scope', '$log', 'usersService', 'applicationsService', 'confirmBoxService'];
+ angular.module('ecompApp').controller('NewUserModalCtrl', NewUserModalCtrl);
+})();