Name

global.HRSecurityUtilsAjax

Description

Contains various utility functions for the Human Resources App Scoped Security Plugin .

Script

var HRSecurityUtilsAjax = Class.create();

HRSecurityUtilsAjax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

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

  ajaxFunction_getDocumentBody : function() {
  	var tableName = this.getParameter('sysparm_tableName');
  	var tableId = this.getParameter('sysparm_tableId');
  	var targetTable = this.getParameter('sysparm_targetTable');
  	var targetId = this.getParameter('sysparm_targetId');
  	var canEdit = this.getParameter('sysparm_canEdit');

  	var hrform = new sn_hr_core.hr_CaseAjax().documentBody(tableName, tableId, targetTable, targetId, canEdit);
  	return new global.JSON().encode({body:hrform.body, unEvaluatedVariables:hrform.unEvaluatedVariable, inaccessibleVariables:hrform.inaccessibleVariable});
  },
  		
  ajaxFunction_setDocumentBody : function() {
  	var documentBody = this.getParameter('sysparm_documentBody') + '';
  	var tableName = this.getParameter('sysparm_table_name') + '';
  	var tableId = this.getParameter('sysparm_table_id') + '';
  	var targetTable = this.getParameter('sysparm_targetTable') + '';
  	var targetId = this.getParameter('sysparm_targetId') + '';
  	var canEdit = this.getParameter('sysparm_canEdit') + '';
  	
  	new sn_hr_core.hr_CaseAjax().setDocumentBody(documentBody, tableName, tableId, targetTable, targetId, canEdit);
  },
  
  ajaxFunction_generateDocument : function() {
  	var tableName = this.getParameter('sysparm_table_name') + '';
  	var tableId = this.getParameter('sysparm_table_id') + '';
  	
  	var gr = new GlideRecord(tableName);
  	if (gr.get(tableId) && gr.canRead() && new sn_hr_core.hr_Delegation().isAssignedOrDelegated(gr)) {
  		if(new sn_hr_core.hr_PdfUtils().isValidPdfTemplate(gr.sys_class_name, gr.sys_id)) {
  			var response = new sn_hr_core.hr_PdfUtils().createPdfForDocument(gr.sys_class_name, gr.sys_id, true);
  			if(response.indexOf('Error') > 0)
  				gs.addInfoMessage(response);
  		} else {
  			new sn_hr_core.GeneralHRForm(gr.sys_class_name, gr.sys_id, gr.sys_class_name, gr.sys_id).generate(true);
  		}
  	}
  },
  
  ajaxFunction_getPreFilledPDFSysId : function(){
  	var pdfTemplateSysId = this.getParameter('sysparm_pdf_sysid') + '';
  	var parentSysid = this.getParameter('sysparm_case_sysid') + '';
  	var tableName = this.getParameter('sysparm_table_name') + '';
  	var tableSysId = this.getParameter('sysparm_table_sysid') + '';
  	
  	var gr = new GlideRecord(tableName);
  	gr.get(tableSysId);
  	if (gr.canRead() && new sn_hr_core.hr_Delegation().isAssignedOrDelegated(gr)) {
  		if (gs.nil(pdfTemplateSysId) || gs.nil(parentSysid) || gs.nil(tableName) || gs.nil(tableSysId))
  			return new global.JSON().encode({previewSysId:""});
  		var previewSysId = new sn_hr_core.hr_PdfUtils().prefillPdfTemplate(pdfTemplateSysId, false, parentSysid, tableName, tableSysId);
  		return new global.JSON().encode({previewSysId:previewSysId});
  	}
  },
  
  ajaxFunction_getPdfDraftDocument : function() {
  	var taskId = this.getParameter('sysparm_task_sysid');
  	var pdfDraftDocumentId = new sn_hr_core.hr_PdfUtils().getPdfDraftDocument(taskId);
  	return new global.JSON().encode({attachmentId:pdfDraftDocumentId});
  },
  
  
  //this function is called in the view rules for urser selection directive.
  userSelectionStackPop : function()
  {
      var stack = GlideSession.get().getStack();
  	if(stack.size()>=0)
  	stack.pop();
  },
  
  
  // returns true if user is a subordinate of manager
  userReportsTo: function(userId, managerId, managers) {
  	var user = new GlideRecord('sys_user');
  	if (!user.get(userId)|| !user.canRead() || user.manager == '')
  		return false;
  	
  	if (!managers)
  		managers = '';
  	if (managers.indexOf(userId) > -1)
  		return false;	
  	
  	if (user.manager == managerId)
  		return true;
  	else
  		return this.userReportsTo(user.manager.sys_id, managerId, managers + ',' + userId);
  },

  removeUserRoles: function(userSysId, roles) {
  	if(gs.nil(userSysId)){
  		gs.error("userSysId shouldn't be null");
  		return;
  	}
  	if(gs.nil(roles)){
  		gs.error("roles shouldn't be null");
  		return;
  	}
  	if(!gs.hasRole('sn_hr_core.admin'))
  		return;
  	var gr = new GlideRecord('sys_user_has_role');
  	gr.addQuery('role.name', 'IN', roles);
  	gr.addQuery('user', userSysId);
  	gr.addQuery('inherited', false);
  	gr.query();
  	gr.deleteMultiple();
  },

  getScheduleTimeSpans: function(/* GlideScheduleTimeSpan */ timeSpan, start, end) {
  	var scheduleSpan = new GlideScheduleTimeSpan(timeSpan, '');
  	var timeSpans = scheduleSpan.getSpans(new GlideScheduleDateTime(start), new GlideScheduleDateTime(end));
  	var spans = [];
  	for (var i = 0; i < timeSpans.size(); i++)
  		spans.push({ name : scheduleSpan.getName(), 
  					 start : timeSpans.get(i).getStart().getGlideDateTime()
  		   });
  			
  	return spans;
  },
  
  getCalendarDateTime : function(dateTime){
  	var gdt = new GlideDateTime(dateTime);
  	var icalUtil = new GlideICALUtil();
  	return icalUtil.formatLocalWithTzid(gdt.getRaw());
  },
  
  type: 'HRSecurityUtilsAjax'
});

Sys ID

9b08e93d531312003585c3c606dc3490

Offical Documentation

Official Docs: