engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/details/activation-key-details.controller.js
/**
* @ngdoc object
* @name Bastion.activation-keys.controller:ActivationKeyDetailsController
*
* @requires $scope
* @requires $state
* @requires $q
* @requires translate
* @requires ActivationKey
* @requires CurrentOrganization
* @requires Organization
* @requires Notification
* @requires ApiErrorHandler
* @requires simpleContentAccessEnabled
*
* @description
* Provides the functionality for the activation key details action pane.
*/
angular.module('Bastion.activation-keys').controller('ActivationKeyDetailsController',
['$scope', '$state', '$q', 'translate', 'ActivationKey', 'Organization', 'CurrentOrganization', 'Notification', 'ApiErrorHandler', 'simpleContentAccessEnabled',
function ($scope, $state, $q, translate, ActivationKey, Organization, CurrentOrganization, Notification, ApiErrorHandler, simpleContentAccessEnabled) {
$scope.defaultRoles = ['Red Hat Enterprise Linux Server', 'Red Hat Enterprise Linux Workstation', 'Red Hat Enterprise Linux Compute Node'];
$scope.defaultUsages = ['Production', 'Development/Test', 'Disaster Recovery'];
$scope.purposeAddonsCount = 0;
$scope.simpleContentAccessEnabled = simpleContentAccessEnabled;
$scope.organization = Organization.get({id: CurrentOrganization}, function(org) {
$scope.purposeAddonsCount += org.system_purposes.addons.length;
});
$scope.panel = {
error: false,
loading: true
};
if ($scope.activationKey) {
$scope.panel.loading = false;
}
$scope.autoAttachOptions = function () {
return [
{
id: true,
name: translate("Yes")
},
{
id: false,
name: translate("No")
}
];
};
$scope.activationKey = ActivationKey.get({id: $scope.$stateParams.activationKeyId}, function (activationKey) {
$scope.panel.loading = false;
$scope.originalEnvironment = activationKey.environment;
}, function (response) {
$scope.panel.loading = false;
ApiErrorHandler.handleGETRequestErrors(response, $scope);
});
$scope.save = function (activationKey) {
var deferred = $q.defer();
activationKey.$update(function (response) {
deferred.resolve(response);
$scope.originalEnvironment = activationKey.environment;
Notification.setSuccessMessage(translate('Activation Key updated'));
}, function (response) {
deferred.reject(response);
Notification.setErrorMessage(translate("An error occurred saving the Activation Key: ") + response.data.displayMessage);
});
return deferred.promise;
};
$scope.setActivationKey = function (activationKey) {
$scope.activationKey = activationKey;
};
$scope.removeActivationKey = function (activationKey) {
activationKey.$delete(function () {
$scope.transitionTo('activation-keys');
Notification.setSuccessMessage(translate('Activation Key removed.'));
}, function (response) {
Notification.setErrorMessage(translate("An error occurred removing the Activation Key: ") + response.data.displayMessage);
});
};
$scope.serviceLevels = function () {
return $scope.organization.$promise.then(function(org) {
return org.service_levels;
});
};
$scope.purposeUsages = function () {
return $scope.organization.$promise.then(function(org) {
var usages = org.system_purposes.usage;
var usage = $scope.activationKey.purpose_usage;
if (usage && !_.includes(usages, usage)) {
usages.push(usage);
}
return _.union(usages, $scope.defaultUsages);
});
};
$scope.purposeRoles = function () {
return $scope.organization.$promise.then(function(org) {
var roles = org.system_purposes.roles;
var role = $scope.activationKey.purpose_role;
if (role && !_.includes(roles, role)) {
roles.push(role);
}
return _.union(roles, $scope.defaultRoles);
});
};
$scope.savePurposeAddons = function (key) {
if ($scope.purposeAddonsList) {
key['purpose_addons'] = _.chain($scope.purposeAddonsList).filter(function(addOn) {
return addOn.selected;
}).map(function(addOn) {
return addOn.name;
}).value();
}
return $scope.save(key);
};
$scope.purposeAddons = function () {
var purposeAddons;
var addOns;
return $scope.organization.$promise.then(function(org) {
$scope.purposeAddonsList = [];
addOns = org.system_purposes.addons;
purposeAddons = $scope.activationKey.purpose_addons;
angular.forEach(purposeAddons, function(addOn) {
if (addOn && !_.includes(addOns, addOn)) {
addOns.push(addOn);
}
});
angular.forEach(addOns, function (addOn) {
$scope.purposeAddonsList.push({"name": addOn, "selected": purposeAddons.indexOf(addOn) > -1});
});
return $scope.purposeAddonsList;
});
};
}]
);