Name

sn_risk_advanced.AdvancedRiskPublicAjax

Description

No description available

Script

var AdvancedRiskPublicAjax = Class.create();
AdvancedRiskPublicAjax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
  
  getCurrencyCode : function() {
  	return new GRCRiskEvent().getCurrencyCode();
  },
  
  _error: function(msg) {
      return new global.JSON().encode({
          error: msg
      });
  },
  
  getRAMForAnyObject: function() {
  	var tableId = this.getParameter('sysparm_table');
  	var recordId = this.getParameter('sysparm_recordId');
  	var ram = new GlideRecord('sn_risk_advanced_risk_assessment_methodology');
  	ram.addQuery('table_name', tableId);
  	ram.addQuery('state', '2');
  	ram.query();
  	
  	if(!ram.next()){
  		return this._error(gs.getMessage('There are no published risk assessment methodologies for this table. Contact your risk administrator for details.'));
  	} else {
  		var assessmentUtils = new sn_risk_advanced.RiskAssessmentUtils();
  		var assessmentId = assessmentUtils.getAssessmentInstanceForAnyObject(tableId, recordId);
  		if(assessmentId){
  			var assessmentInstance = new GlideRecord('sn_risk_advanced_risk_assessment_instance');
  				assessmentInstance.get(assessmentId);
  				
  			var url = '/sn_risk_advanced_risk_assessment_instance.do?sys_id=' + assessmentId;
  			var link = ' <a target="_blank" href="' + url + '">' +assessmentInstance.getValue('number') + '</a>';
  			var assessmentInfo = {
  				assessmentId:assessmentId,
  				newInstanceMsg: gs.getMessage('Risk assessment already exists. {0}', [link])
  			};
  			return new global.JSON().encode(assessmentInfo);
  		}
  		
  		var result = {
  			ramId : ram.getUniqueValue(),
  			dueDate: ram.getValue('days_to_overdue'),
  			frequency: ram.getValue('reassessment_frequency')
  		};
  	}
  	return new global.JSON().encode(result);
  },
  
  checkUserRole: function() {
  	var assessorId = this.getParameter('sysparm_assessorId');
  	var approverId = this.getParameter('sysparm_approverId');
  	var assessmentUtils = new sn_risk_advanced.RiskAssessmentUtils();
  	var result = {
  			assessorPresent : assessmentUtils.checkAssessorRole(assessorId),
  			approverPresent : assessmentUtils.checkApproverRole(approverId)
  		};
  	return new global.JSON().encode(result);
  },
  
  createRiskAssessmentInstanceForAnyObject: function() {
  	var assessorId = this.getParameter('sysparm_assessor');
  	var approverId = this.getParameter('sysparm_approver');
  	var ramId = this.getParameter('sysparm_ramId');
  	var dueDate = this.getParameter('sysparm_dueDate');
  	var frequency = this.getParameter('sysparm_frequency');
  	var tableId = this.getParameter('sysparm_tableName');
  	var recordId = this.getParameter('sysparm_recordId');
  	var assessmentUtils = new sn_risk_advanced.RiskAssessmentUtils();
  	var instanceObj = {};
  	instanceObj.risk_assessment_methodology = ramId;
  	instanceObj.assessor_user = assessorId;
  	instanceObj.approver_user = approverId;
  	instanceObj.source_record = recordId;
  	instanceObj.table = tableId;
  	instanceObj.state = '1';
  	instanceObj.next_schedule_date = assessmentUtils.getNextScheduleDate(frequency);
  	instanceObj.asmt_due_date = assessmentUtils.getAssessmentDueDate(dueDate);
  	instanceObj.orignal_assessor_user = assessorId;
  	instanceObj.orignal_approver_user = approverId;	
  	
  	var assessmentInstanceId = assessmentUtils.getAssessmentInstanceForAnyObject(tableId, recordId);
  	if (assessmentInstanceId == null) {
  		assessmentInstanceId = assessmentUtils.createAssessmentInstance(instanceObj);
  		if (assessmentInstanceId == null) {
  			return this._error(gs.getMessage('Risk assessment could not be created.'));
  		}
  		assessmentUtils.createAssessmentQuestions(assessmentInstanceId);
  	}
  	
  	var assessmentInstance = new GlideRecord('sn_risk_advanced_risk_assessment_instance');
  	assessmentInstance.get(assessmentInstanceId);
  			
  	var url = '/sn_risk_advanced_risk_assessment_instance.do?sys_id=' + assessmentInstanceId;
  	var link = ' <a target="_blank" href="' + url + '">' +assessmentInstance.getValue("number") + '</a>';
  	var result = {
  		newInstanceMsg: gs.getMessage('Risk assessment created successfully. {0}', [link])
  	};
  	return new global.JSON().encode(result);
  },
  
  updateRiskAssessment: function() {
  	var assessorId = this.getParameter('sysparm_assessor');
  	var approverId = this.getParameter('sysparm_approver');
  	var approverCheck = this.getParameter('sysparm_approverCheck');
  	
  	var asmtId = this.getParameter('sysparm_assessmentId');
  	
  	var asmt = new GlideRecord('sn_risk_advanced_risk_assessment_instance');
  	asmt.get(asmtId);
  	
  	var ram = new GlideRecord('sn_risk_advanced_risk_assessment_methodology');
  	ram.get(asmt.getValue('risk_assessment_methodology'));
  	
  	var assessmentUtils = new sn_risk_advanced.RiskAssessmentUtils();
  	if(assessorId){
  		asmt.assessor_user = assessorId;
  	}
  	if(approverId || !approverCheck){
  		asmt.approver_user = approverId;
  	}
  	
  	asmt.state = '1';
  	asmt.next_schedule_date = assessmentUtils.getNextScheduleDate(ram.getValue('reassessment_frequency'));
  	asmt.asmt_due_date = assessmentUtils.getAssessmentDueDate(ram.getValue('days_to_overdue'));
  	asmt.orignal_assessor_user = asmt.assessor_user;
  	asmt.orignal_approver_user = asmt.approver_user;	
  	asmt.update();
  	assessmentUtils.updateExceptionState(asmt.getUniqueValue(), asmt.getTableName(), "assessor_user", "2");
  	assessmentUtils.updateExceptionState(asmt.getUniqueValue(), asmt.getTableName(), "approver_user", "2");
  	var result = {
  		msg: gs.getMessage('Risk assessment updated successfully.')
  	};
  	return new global.JSON().encode(result);
  },
  
  cancelAnyObjectRiskAssessment: function(){
  	var tableId = this.getParameter('sysparm_tableName');
  	var recordId = this.getParameter('sysparm_recordId');
  	var response = new sn_risk_advanced.RiskAssessmentUtils().cancelAnyObjectAssessment(tableId,recordId);
  	return new global.JSON().encode(response);
  },

  type: 'AdvancedRiskPublicAjax'
});

Sys ID

9321c3280f281010bad14bb768767e64

Offical Documentation

Official Docs: