Name

sn_hr_core.hr_BulkCaseRequestAjaxUtils

Description

No description available

Script

var hr_BulkCaseRequestAjaxUtils = Class.create();
hr_BulkCaseRequestAjaxUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

  initialize: function(request, responseXML, gc) {
      global.AbstractAjaxProcessor.prototype.initialize.call(this, request, responseXML, gc);

      this.canReadBulkCaseUserSegment = new GlideRecord('sn_hr_core_bulk_case_user_segment').canRead();
  },

  /**
   * Method to find total number of user-segments to process bulk-case-request
   *  by querying `bulk case user segment` record to find `included` users for provided `bulk case request ID`
   *
   * @params: (extracted from caller)
   *  sysparm_bulkCaseRequestID: bulk case request unique ID
   * 
   * @returns {Object} containing properties
   *  error - {string} message if encountered 
   *  success - {object} containing user-segment count marked `included` and string message for GlideModal
   */
  getIncludedUserSegmentData: function() {
      var response = {};
      var bulkCaseRequestID = this.getParameter('sysparm_bulkCaseRequestID');
  	var createParentCase = this.getParameter('sysparm_createParentCase');
  	
      if (gs.nil(bulkCaseRequestID))
          return JSON.stringify({
              error: gs.getMessage("Missing required parameter 'sysparm_bulkCaseRequestID'")
          });

      if (!this.canReadBulkCaseUserSegment)
          return JSON.stringify({
              error: gs.getMessage('Invalid user. Access denied.')
          });

      //get `included` user-segment count
      var bulkCaseUserSegmentGR = new GlideRecord('sn_hr_core_bulk_case_user_segment');
      bulkCaseUserSegmentGR.addQuery('user_segment_group.bulk_case_request', bulkCaseRequestID);
      bulkCaseUserSegmentGR.addQuery('status', 'included');
      bulkCaseUserSegmentGR.query();
  	bulkCaseUserSegmentGR.next();
      var includedBulkCaseUserSegmentCount = bulkCaseUserSegmentGR.getRowCount();

      if (includedBulkCaseUserSegmentCount < 1)
          return JSON.stringify({
              error: gs.getMessage("No user-segment record found for 'Bulk case request' - {0}", bulkCaseRequestID)
          });
      else {
  		if (createParentCase) 
  			includedBulkCaseUserSegmentCount++;
  			
          var successMessage = (includedBulkCaseUserSegmentCount == 1) ? gs.getMessage('One case will be created.') : gs.getMessage('{0} cases will be created.', includedBulkCaseUserSegmentCount+'');
          return JSON.stringify({
              success: {
                  userCount: includedBulkCaseUserSegmentCount,
                  message: successMessage,
                  info: this._getCautionMessage(bulkCaseUserSegmentGR.user_segment_group.bulk_case_request.hr_service.topic_detail.topic_category.coe+'', includedBulkCaseUserSegmentCount)
              }
          });
      }
  },
  
  _getCautionMessage: function(COE, caseCount) {
  	var isHRCoreCase = COE.startsWith('sn_hr_core_case');
  	var isLECase = COE.startsWith('sn_hr_le_case');
  	
  	if (isHRCoreCase && (caseCount > 10000))
  		return gs.getMessage('Processing performance may be affected when creating more than 10,000 HR cases.');
  	if (isLECase && (caseCount > 1000))
  		return gs.getMessage('Processing performance may be affected when creating more than 1000 Lifecycle Event cases.');
  },

  type: 'hr_BulkCaseRequestAjaxUtils'
});

Sys ID

76a2b9ca0f832010af170c3635767e30

Offical Documentation

Official Docs: