Name

global.ChangeRequestStateHandlerAjaxSNC

Description

Base client API extended by ChangeRequestStateHandlerAjax

Script

var ChangeRequestStateHandlerAjaxSNC = Class.create();
ChangeRequestStateHandlerAjaxSNC.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  initialize: function(request, responseXML, gc) {
      AbstractAjaxProcessor.prototype.initialize.call(this, request, responseXML, gc);
      this.log = new GSLog(ChangeRequestStateHandlerSNC.LOG_PROPERTY);
      this.log.setLog4J();
  },

  /**
   * Confirms whether the state value is a valid "next" state for the change to move to
   * 
   * @param sysparm_change_sys_id sys_id of a change_request record
   * @param sysparm_next_state name of the state to check. E.g. assess, authorized, etc.
   */
  ajaxFunction_isNextState: function() {
      var sysId = this.getParameter("sysparm_change_sys_id");
      var changeGr = this._getChangeGr(sysId);
      if (!changeGr) {
          this.log.debug("[isNextState] could not find change_request with sys_id = " + sysId);
          return false;
      }

      return new ChangeRequestStateHandler(changeGr).isNext(this.getParameter("sysparm_next_state"));
  },

  /**
   * Returns an array containing the values of the next states for an existing change
   * 
   * @param sysparm_change_sys_id sys_id of a change_request record
   */
  ajaxFunction_getNextStateValues: function() {
      var changeId = this.getParameter("sysparm_change_sys_id");
  	var changeType = '' + this.getParameter("sysparm_change_type");
      if (!changeId && !changeType)
          return "";

  	var gr;
  	gr = new GlideRecordSecure("change_request");
  	if (!gr.get(changeId)) {
  		this.log.debug("[getNextStateValues] could not find change_request with sys_id = " + changeId);
  		gr = ChangeRequest.newChange(changeType).getGlideRecord();
  	} 	
  	
  	var stateValues = [];

  	var stateHandler = new ChangeRequestStateHandler(gr);
  	var nextStates = stateHandler.getNextStates();
  	if (nextStates) {
  		for (var i = 0; i < nextStates.length; i++)
  			stateValues.push(stateHandler.getStateValue(nextStates[i]));
  	}
  	
  	return JSON.stringify(stateValues);
  },

  /**
   * Returns the name of the state given its numeric value. E.g. -4 = assess, -3 = authorize
   * 
   * @param sysparm_state_name name of the state to convert. E.g. assess, authorize, etc
   */
  ajaxFunction_getStateValue: function() {
      var stateName = this.getParameter("sysparm_state_name");
      if (!stateName)
          return "";

      var stateValue = new ChangeRequestStateHandler().getStateValue(stateName);

      this.log.debug("[getStateValue] state with name '" + stateName + "' return with value '" + stateValue + "'");

      return stateValue || "";
  },

  _getChangeGr: function(sysId) {
      if (!sysId)
          return null;

      var gr = new GlideRecordSecure("change_request");
      if (gr.get(sysId))
          return gr;

      return null;
  },

  type: "ChangeRequestStateHandlerAjaxSNC"
});

Sys ID

166f5498cb200200d71cb9c0c24c9c46

Offical Documentation

Official Docs: