Name

global.SourceRequestValidator

Description

Validates Procurement Sorce Request

Script

var SourceRequestValidator = Class.create();
SourceRequestValidator.prototype = {
  initialize: function(requestData) {
      this.requestData = requestData;
  },
  
  validate: function() {
      var response = {status:'success'}
      response['errors'] = [];
      
      var hasError= this._validateAssignments();
      if(hasError)
          response['status'] = 'error';
      response['reqData'] = this.requestData;
      return response;
  },
  
  _validateAssignments: function() {
      var response = {status:'success'}
      var hasError = false;
      response['errors'] = [];
      for(var i=0; i<this.requestData.length; i++) {
          if(!gs.nil(this.requestData[i].assignments) && this.requestData[i].assignments.length>0) {
              var assignments = this.requestData[i].assignments;
              for(var j=0; j<assignments.length; j++) {
                  assignments[j]['errors'] = {};
                  if(!this._validateAsgn(assignments[j])) {
                      var asgnType = assignments[j].asgn_type.value;
                      var error = {};
                      error['errMsg'] = gs.getMessage('The assignment does not match the license condition');
                      error['hasError'] = true;
                      assignments[j].errors[asgnType] = error;
                      hasError = true;
                  }
              }
          }
      }
      return hasError;
  },
  
   _validateAsgn: function(asgn) {
      var assetUtil = new AssetUtils();
      if((asgn.asgn_type.value == 'user' && !assetUtil.verifyUserEntitlement(asgn.license.sys_id, asgn.user.value))
  			||(asgn.asgn_type.value == 'device' && !assetUtil.verifyDeviceEntitlement(asgn.license.sys_id, asgn.device.value))) {
          return false;
      } 
      return true;
  },
  
  log: function(msg){
  	gs.info('[SourceRequestValidator] ' + msg)
  },

  type: 'SourceRequestValidator'
};

Sys ID

8ccab3d0935012003706dfa5e57ffbc3

Offical Documentation

Official Docs: