Name

sn_hr_core.hr_BulkCaseUserSegmentGroupUtilsSNC

Description

APIs to create and update Bulk case user segment group record from REST APIs. Workaround for platform limitation to encrypt nested JSON. (Edge encryption)

Script

var hr_BulkCaseUserSegmentGroupUtilsSNC = Class.create();
hr_BulkCaseUserSegmentGroupUtilsSNC.prototype = {
  initialize: function() {},

  /*
  * Create sn_hr_core_bulk_case_user_segment_group record by setting values
  * 
  * @param: 
  *  fieldValues - {fieldName:fieldValue} JSON object
  * @returns:
  *  {sys_id:<unique-ID>} or HTTP error
  */
  createUserSegmentGroup: function(fieldValues) {
      var userSegGroupRecord = new GlideRecord('sn_hr_core_bulk_case_user_segment_group');

      //check user access to create record
      if (!userSegGroupRecord.canCreate())
          return this.getHTTPError('User does not have permission to create "sn_hr_core_bulk_case_user_segment_group" record.');

      //set [field:value] for GlideRecord
      this.setRecordValues(userSegGroupRecord, fieldValues);

      //create record
      return this.validateGROperation(userSegGroupRecord.insert());
  },

  /*
  * Update sn_hr_core_bulk_case_user_segment_group record
  * 
  * @params:
  *  uniqueID - sys_id to fetch the record
  *  fieldValues - {fieldName:fieldValue} JSON object
  * @returns:
  *  {sys_id:<unique-ID>} or HTTP error
  */
  updateUserSegmentGroup: function(uniqueID, fieldValues) {
      if (gs.nil(uniqueID))
          return this.getHTTPError('Missing required unique ID for "sn_hr_core_bulk_case_user_segment_group" record.');

      //check user permission to update record
      var userSegGroupRecord = new GlideRecord('sn_hr_core_bulk_case_user_segment_group');
      if (!userSegGroupRecord.canWrite())
          return this.getHTTPError('User does not have permission to update "sn_hr_core_bulk_case_user_segment_group" record.');

      //record not found
      if (!userSegGroupRecord.get(uniqueID))
          return this.getHTTPError('Record for "sn_hr_core_bulk_case_user_segment_group" with ID "' + uniqueID + '" not found.');

      //set [field:value] for GlideRecord
      this.setRecordValues(userSegGroupRecord, fieldValues);

      //update record
  	return this.validateGROperation(userSegGroupRecord.update(gs.getMessage('Record updated by Script Include "hr_BulkCaseUserSegmentGroupUtils().updateUserSegmentGroup()"')));
  },

  setRecordValues: function(glideRecord, fieldValues) {
      Object.keys(fieldValues).map(function(fieldName) {

          var fieldValue = fieldValues[fieldName];

          //store JSON.stringify for objects
          if (typeof fieldValue == 'object')
              glideRecord.setValue(fieldName, JSON.stringify(fieldValue));
          else
              glideRecord.setValue(fieldName, fieldValue);
      });
  },

  validateGROperation: function(uniqueID) {
      if (gs.nil(uniqueID)) {
          var error = new sn_ws_err.ServiceError();
          error.setMessage('Failed to create "sn_hr_core_bulk_case_user_segment_group" record.');
          return error;
      } else {
  		//
  		var userSegGroupGR = new GlideRecord('sn_hr_core_bulk_case_user_segment_group');
  		userSegGroupGR.get(uniqueID);
  		
          return {
              sys_id: uniqueID,
  			revision: userSegGroupGR.getValue('revision'),
  			bulk_case_request: {value: userSegGroupGR.getValue('bulk_case_request')}
          };
  	}
  },

  getHTTPError: function(msg) {
      return new sn_ws_err.BadRequestError(msg);
  },

  type: 'hr_BulkCaseUserSegmentGroupUtilsSNC'
};

Sys ID

d43aa8a153833010a7f9ddeeff7b12f4

Offical Documentation

Official Docs: