SmartIT_Extensions/BMC/smart-it-full-helix/scripts/app/gainsight/gainsight-directive.js

81 lines
5.8 KiB
JavaScript

"use strict";
(function () {
'use strict';
angular.module('myitsmApp').directive("gainsight", ['$window', 'metadataModel', 'gainsightModel', 'permissionModel', 'roles', function ($window, metadataModel, gainsightModel, permissionModel, roles) {
return {
restrict: "EA",
link: function (scope) {
metadataModel.getMetadataByType(EntityVO.TYPE_GLOBAL).then(function (res) {
if (res.enableGainsight) {
gainsightModel.getTelemetryConfiguration().then(function (config) {
if (config.settings.enableGainsight && config.displayBanner) {
gainsightModel.showOptinConfig();
}
var tagKey = config.productTag;
var userRole = !!permissionModel.hasPermission('admin:screenConfiguration') ? "Administrator" : "";
if (!userRole) {
if (!!permissionModel.hasPermission(roles.ITSM_AGENT_ROLE) || !!permissionModel.hasPermission(roles.ITSM_CHANGE_USER_ROLE)
|| !!permissionModel.hasPermission(roles.ITSM_KNOWLEDGE_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_PROBLEM_USER_ROLE)
|| !!permissionModel.hasPermission(roles.ITSM_ASSET_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_ASSET_ADMIN_ROLE)
|| !!permissionModel.hasPermission(roles.ITSM_RELEASE_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_SBE_USER_ROLE)
|| !!permissionModel.hasPermission(roles.ITSM_BROADCAST_USER_ROLE)) {
userRole = "Agent";
}
}
var gainsightConfig = {
application: {
id: "SmartIT",
productName: "Smart IT",
productVersion: "22.1"
},
user: {
id: config.hashedUserId,
globalId: config.hashedUserId,
role: userRole,
roles: {
isAdmin: !!permissionModel.hasPermission('admin:screenConfiguration'),
isKCSCoach: !!permissionModel.hasPermission(roles.ITSM_KCS_COACH_ROLE),
isKBAdmin: !!permissionModel.hasPermission(roles.ITSM_ADMIN_ROLE),
isAgent: !!permissionModel.hasPermission(roles.ITSM_AGENT_ROLE) || !!permissionModel.hasPermission(roles.ITSM_CHANGE_USER_ROLE)
|| !!permissionModel.hasPermission(roles.ITSM_KNOWLEDGE_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_PROBLEM_USER_ROLE)
|| !!permissionModel.hasPermission(roles.ITSM_ASSET_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_ASSET_ADMIN_ROLE)
|| !!permissionModel.hasPermission(roles.ITSM_RELEASE_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_SBE_USER_ROLE)
|| !!permissionModel.hasPermission(roles.ITSM_BROADCAST_USER_ROLE)
}
}
};
var productInfo = {
productArea: {
name: "SmartIT",
version: '22.1.06',
hosting: config.settings.deploymentType
}
};
var gainsightScriptUrl = "https://web-sdk.aptrinsic.com/api/aptrinsic.js";
if (config.settings.loadGainsightFromBmcIt) {
gainsightScriptUrl = "https://documents.bmc.com/products/docs/gainsight/main/aptrinsic.js";
}
//Load if globally switched on
(function (global, doc, scriptUrl, accountId, configOptions) {
var aptrinsic = "aptrinsic";
global[aptrinsic] = global[aptrinsic] || function () {
(global[aptrinsic].q = global[aptrinsic].q || []).push(arguments);
};
global[aptrinsic].p = accountId;
global[aptrinsic].c = configOptions;
var script = doc.createElement("script");
script.async = true;
script.src = scriptUrl + "?a=" + accountId;
var firstScript = doc.getElementsByTagName("script")[0];
firstScript.parentNode.insertBefore(script, firstScript);
})(window, document, gainsightScriptUrl, tagKey);
$window.aptrinsic('identify', gainsightConfig.user, gainsightConfig.application);
$window.aptrinsic('set', 'globalContext', productInfo);
});
}
});
}
};
}]);
})();