Name

global.OneExtendBRUtil

Description

No description available

Script

var OneExtendBRUtil = Class.create();

OneExtendBRUtil.prototype = {
  initialize: function() {
      this.REQUIRED_PLUGIN_MAP = {};
      //Dynamic Translation Capability
      this.REQUIRED_PLUGIN_MAP["b8c0a026530a1110c271ddeeff7b1252"] = ["com.glide.dynamic_translation"];
      this.REQUIRED_PLUGIN_MAP["df6986f853521110c271ddeeff7b1278"] = ["com.sn.va.profanity"];
  },

  _checkIfAllPluginsAreActive: function(required_plugins) {
      var pMgr = new GlidePluginManager();

      var allActive = true;
      for (var idx in required_plugins) {
          var active = pMgr.isActive(required_plugins[idx]);
          allActive = allActive && active;
      }

      return allActive;
  },

  _validatePluginInstallation: function(current, previous) {

      var required_plugins = this.REQUIRED_PLUGIN_MAP[current.sys_id];
      var allActive = this._checkIfAllPluginsAreActive(required_plugins);

      if (!allActive && current.operation() == "update" && current.active && !previous.active) {
          gs.addErrorMessage(gs.getMessage("Please install these plugins to activate this capability definition: {0}", required_plugins.join()));
          current.setAbortAction(true);
      }
  },

  validateBuilderCapabilityOnInsert: function(current, previous) {
      var builderCapabilityGr = new GlideRecord("sys_one_extend_builder_capability");
      builderCapabilityGr.addActiveQuery();
      builderCapabilityGr.addQuery("builder", current.builder);
      builderCapabilityGr.addQuery("definition.capability", current.definition.capability);
      builderCapabilityGr.addQuery("default", true);
      builderCapabilityGr.query();

      var hasDefault = false;

      if (builderCapabilityGr.next()) {
          gs.info("found something");
          hasDefault = true;
      }

      if (hasDefault && current.getValue("default") == true) {
          gs.addErrorMessage(gs.getMessage("There is already a default mapping for this builder with one of the definitions for this capability."));
          current.setAbortAction(true);
      } else if (!hasDefault) {
          gs.info("setting default true");
          current.setValue("default", "true");
      }
  },

  _validateDefaultBuilderCapability: function(current, previous) {
      var hasNoRow = true;
      var builderCapabilityGr = new GlideRecord("sys_one_extend_builder_capability");
      builderCapabilityGr.addActiveQuery();
      builderCapabilityGr.addQuery("builder", current.builder);

      if (current.operation() == "update") {
          builderCapabilityGr.addQuery("sys_id", "!=", current.sys_id);
      }
      builderCapabilityGr.addQuery("definition.capability", current.definition.capability);
      builderCapabilityGr.query();
      while (builderCapabilityGr.next()) {
          hasNoRow = false;
          if (builderCapabilityGr.getValue("default") == true) {
              gs.addErrorMessage(gs.getMessage("There is already a default mapping for this builder with one of the definitions for this capability."));
              current.setAbortAction(true);
          }
      }
      return hasNoRow;
  },

  validateBuilderCapabilityRow: function(current, previous) {
      if (current.operation() == "insert") {
          this.validateBuilderCapabilityOnInsert(current, previous);
      } else if (current.operation() == "update" && current.active == true && current.getValue("default") == true) {
          this._validateDefaultBuilderCapability(current, previous);
      } else if (current.operation() == "update" && current.active == false && previous.active == true) {

          var usageActiveGr = new GlideRecord("sys_one_extend_usage");
          usageActiveGr.addActiveQuery();
          usageActiveGr.addQuery("definition", current.definition);
          usageActiveGr.query();

          if (usageActiveGr.next()) {
              gs.addErrorMessage(gs.getMessage("There is one or more active usage associated with this capability. Please mark all the related usage in sys_one_extend_usage table inactive, before making this capability inactive."));
              current.setAbortAction(true);
          }
      } else if (current.operation() == "delete") {
          var usageGr = new GlideRecord("sys_one_extend_usage");
          usageGr.addQuery("definition", current.definition);
          usageGr.query();

          if (usageGr.next()) {
              gs.addErrorMessage(gs.getMessage("There is one or more usage associated with this capability. Please delete all the related usage before deleting this capability."));
              current.setAbortAction(true);
          }
      }
  },

  type: 'OneExtendBRUtil'
};

Sys ID

f40bf00f53311110c271ddeeff7b12ec

Offical Documentation

Official Docs: