"use strict"; /** * Licensed Materials - Property of IBM * IBM Cognos Products: admin * Copyright IBM Corp. 2018 * US Government Users Restricted Rights -Use, duplication or disclosure * restricted by GSA ADP Schedule Contract with IBM Corp. */ define(['underscore', 'bi/admin/common/services/BaseCustomizationService', 'bi/admin/common/utils/AJAXUtils', 'bi/admin/nls/StringResource'], function (_, BaseCustomizationService, AJAXUtils, StringResource) { 'use strict'; //NOSONAR: meant to be strict var TenantsCustomizationService = BaseCustomizationService.extend({ getCustomizations: function getCustomizations(id) { return this._getCustomizations(AJAXUtils.getPath("tenantCustomizations", id)); }, saveCustomizations: function saveCustomizations(id) { return Promise.try(function () { return this._saveCustomizations(AJAXUtils.getPath("tenantCustomizations", id)); }.bind(this)); }, _saveCustomizations: function _saveCustomizations(url) { if (this._customizations.fileUpload_location === ".my_folders") { delete this._customizations.fileUpload_location; url = url + "&fields=fileUpload_location"; return this._ajaxDelete(url, 'DELETE'); } if (this._customizations.ui_teamFolders && _.isEmpty(this._customizations.ui_teamFolders)) { delete this._customizations.ui_teamFolders; url = url + "&fields=ui_teamFolders"; return this._ajaxDelete(url, 'DELETE'); } return this._ajaxPut(url, this._customizations); }, _getCustomizationsWithDefaults: function _getCustomizationsWithDefaults() { var returnValue = { 'ui_theme': StringResource.get('default'), 'ui_homePage': { 'perspective': StringResource.get('default') }, 'ui_excludedFeatures': { 'ids': [] }, 'ui_teamFolders': {}, 'parameters': {}, 'contentLocale': "", 'productLocale': "", 'timeZoneID': "", 'baseTextDirection': "", 'biDirectionalFeaturesEnabled': false, 'fileUpload_location': null }; if (this._customizations) { Object.keys(returnValue).forEach(this._replaceDefaultsWCustomValues.bind(this, returnValue, this._customizations)); } return returnValue; }, getTenant: function getTenant(id) { return this._ajaxGet(AJAXUtils.getPath("getTenant", id) + "&fields=defaultName,disabled,permissions,owner.defaultName,hidden,capabilities,hasChildren,searchPath,modificationTime,creationTime,ancestors,defaultDescription,tenantID,tenantMembers,id"); }, getTenantIDForUser: function getTenantIDForUser(userID) { return this._ajaxGet(AJAXUtils.getPath("tenantIDForUser", userID) + "?fields=tenantID"); }, _getTenants: function _getTenants() { return this._ajaxGet(AJAXUtils.getPath("tenants") + "?fields=defaultName,disabled,modificationTime,permissions,tenantID,storeID"); //return this._ajaxGet('v1/search/cm?filter=type|tenant'); }, getTenantsList: function getTenantsList() { return this._getTenants().then(function (tenants) { return tenants.data; }.bind(this)); }, addTenant: function addTenant(tenantSpec) { return this._ajaxPost(AJAXUtils.getPath("tenants"), tenantSpec); }, updateTenant: function updateTenant(id, tenantSpec) { return this._ajaxPut(AJAXUtils.getPath("updateTenant", id), tenantSpec); }, addTenantMembers: function addTenantMembers(id, tenantMembers) { return this.updateTenant(id, tenantMembers); }, removeTenantMembers: function removeTenantMembers(id, tenantMembers) { return this.updateTenant(id, tenantMembers); }, disableTenant: function disableTenant(id, tenantSpec) { return this.updateTenant(id, { 'disabled': tenantSpec }); }, deleteTenant: function deleteTenant(id, shouldDeleteTenantUserProfile) { if (!shouldDeleteTenantUserProfile) { return this._ajaxDelete(AJAXUtils.getPath("deleteTenant", id)); } else { return this._ajaxDelete(AJAXUtils.getPath("deleteTenantUserProfile", id)); } }, killTenantSessions: function killTenantSessions(id) { return this._ajaxDelete(AJAXUtils.getPath("killTenantSessions", id)); }, getTenantNotificationSettings: function getTenantNotificationSettings(id) { return this._fetchGet(AJAXUtils.getPath("tenantNotificationSettings", id)); }, setTenantNotificationSettings: function setTenantNotificationSettings(id, senderEmail) { return this._fetchPut(AJAXUtils.getPath("tenantNotificationSettings", id), { "defaultSender": senderEmail }); }, getSystemNotificationSettings: function getSystemNotificationSettings() { return this._fetchGet(AJAXUtils.getPath("systemNotificationSettings")); }, getTenantPreferences: function getTenantPreferences(id) { return this._fetchGet(AJAXUtils.getPath("tenantPreferences", id)); }, setTenantPreferences: function setTenantPreferences(id, preferences) { return this._fetchPut(AJAXUtils.getPath("tenantPreferences", id), preferences); } }); return TenantsCustomizationService; });