Name

sn_esign.esign_taskUtils

Description

No description available

Script

var esign_taskUtils = Class.create();
esign_taskUtils.prototype = {
  initialize: function() {
  },
  
  getTasks: function(taskID) {
  	var gr = new GlideRecord('task');
  	gr.addQuery('sys_id',taskID);
  	gr.query();
  	gr.next();
  	var task = {};
  	if(gr.canRead()) {
  		task.status ="success";
  		var now = new GlideDateTime();
  		var offset = now.getTZOffset();
  		now = now.getNumericValue() + offset;
  		task.sys_id = gr.getValue("sys_id");
  		task.class_name = gr.getValue("sys_class_name");		
  		task.state = gr.getValue("state");
  		task.finished = gr.getValue("active") == "0";
  		task.opened_by = gr.getValue("opened_by");
  		task.assigned_to = {userId: gr.getValue("assigned_to"), name: gr.getDisplayValue("assigned_to")};
  		task.updated = gr.getValue("sys_updated_on");
  		task.due_date = gr.getValue("due_date");
  		task.closed_at = gr.getValue("closed_at");
  		task.created = gr.getValue("sys_created_on");
  		task.assigned_to_me = (gr.getValue("assigned_to") == gs.getUserID());	
  		task.esign_type = gr.getElement("sn_esign_esignature_configuration").getRefRecord().getValue("signature_type");
  		task.acknowledgement_text = gr.getElement("sn_esign_esignature_configuration").getRefRecord().getValue("acknowledgement_text");
  		task.acknowledge_document = gr.getElement("sn_esign_esignature_configuration").getRefRecord().getValue("managed_document");
  		task.domain = gr.getElement("sn_esign_esignature_configuration").getRefRecord().getValue("sys_domain");
  		task.esign_doc_type = gr.getElement("sn_esign_esignature_configuration").getRefRecord().getValue("document_type");
  		task.kb_article = gr.getElement("sn_esign_esignature_configuration").getRefRecord().getValue("kb_article");
  		task.kb_article_number = gr.getElement("sn_esign_esignature_configuration").getRefRecord().getDisplayValue("kb_article").split(' ')[0];
  		task.esign_document = gr.getValue("sn_esign_document");
  		task.esign_documentUrl = '/sys_attachment.do?sysparm_referring_url=tear_off&view=true&sys_id=' + task.esign_document;
  	}else
  		task.status = "error";
  	
  	return task;
  },

  
  setTaskFinished : function(request) {
  	var sysId = request.sys_id;
  	var result = {};

  	if (request.sys_id && request.user_id) {
  		var gr = new GlideRecord("task");
  		gr.get(sysId);
  		
  		var userId = gs.getUserID();
  		if (gr.canRead() && (gr.getValue("assigned_to") == userId || (GlidePluginManager().isActive('com.glide.granular_service_delegation') && new sn_delegation.DelegationUtil().isRecordDelegatedToUser(userId, gr)))) {
  			gr.setValue("state", "3");
  			if (gr.update()) {
  				result.status = "success";
  				result.short_description = gr.getValue('short_description');
  			} else{
  				result.status = "error";
  				gs.addErrorMessage(gs.getMessage("There was an error signing the document. Please contact your administrator for help."));
  			}
  		}
  	}
  	return result;
  },
  
  setTaskFinishedWithMessage : function(request) {
  	var response = this.setTaskFinished(request);
  	if(response.status == "success")
  		gs.addInfoMessage(gs.getMessage('The to-do "{0}" has been completed ', response.short_description));
  	
  	return response;
  },
  
  saveDocumentAcknowledgement : function(acknowledgement_text,
  										esign_type,
  										sys_id,
  										document_revision,
  										kb_article,
  										signature,
  										domain,
  										table_name,
  										user_id) {
  	var taskGR = new GlideRecord('task');
  	taskGR.get(sys_id);
  	var result = {};
  	if (taskGR.canRead() && (taskGR.getValue("assigned_to") == user_id || (GlidePluginManager().isActive('com.glide.granular_service_delegation') && new sn_delegation.DelegationUtil().isRecordDelegatedToUser(user_id, taskGR)))) {
  		var gr = new GlideRecord("sn_esign_acknowledgement");
  		gr.initialize();
  		gr.setValue("acknowledged", true);
  		if (acknowledgement_text)
  			gr.setValue("acknowledgement_text", acknowledgement_text);
  		gr.setValue("acknowledgement_type", esign_type);
  		gr.setValue("document", sys_id);
  		if (document_revision)
  			gr.setValue("document_revision", document_revision);
  		if (kb_article)
  			gr.setValue("kb_article", kb_article);
  		if (signature)
  			gr.setValue("signature", signature);
  		gr.setValue("sys_domain", domain);
  		gr.setValue("table_name", table_name);
  		gr.setValue("user", user_id);
  		if (gr.insert()) 
  			result.status = "success";
  		else {
  			result.status = "error";
  			gs.addErrorMessage(gs.getMessage("There was an error signing the document. Please contact your administrator for help."));
  		}
  	}
  	else{
  		result.status = "error";
  		gs.addErrorMessage(gs.getMessage("There was an error signing the document. Please contact your administrator for help."));
  	}
  	return result;
  },
  
  getManagedDocumentDetails : function(attachmentSysId) {
  	var managedDocumentDetails = {};
  	var gr = new GlideRecord("sys_attachment");
  	gr.addQuery('sys_id', attachmentSysId);
  	gr.query();
  	
  	if(gr.next()) {
  		managedDocumentDetails.status = "success";
  		managedDocumentDetails.table_name = gr.getValue('table_name');
  		managedDocumentDetails.table_sys_id = gr.getValue('table_sys_id');
  		managedDocumentDetails.content_type = gr.getValue('content_type');
  		managedDocumentDetails.canRead = gr.canRead();
  	} else
  		managedDocumentDetails.status = "error";
  	
  	return managedDocumentDetails;
  },
  
  getAcknowledgeDocument : function(document_id) {
  	var gr = new GlideRecord("dms_document_revision");
  	gr.addQuery("document", document_id);
  	gr.addQuery("stage", "published");
  	gr.query();

  	var attachmentInfo = {};
  	if (gr.next()) {
  		attachmentInfo.status = "success";
  		attachmentInfo.document_name = gr.document.name.toString();
  		attachmentInfo.document_revision = gr.getUniqueValue();
  		var _attachmentInfo = this._getAttachmentInfo(gr.getUniqueValue());
  		if (_attachmentInfo === null)
  			attachmentInfo.status = "error";
  		else {
  			attachmentInfo.canRead = _attachmentInfo.canRead;
  			attachmentInfo.document = _attachmentInfo.document;
  			attachmentInfo.documentUrl = '/sys_attachment.do?sysparm_referring_url=tear_off&view=true&sys_id=' + attachmentInfo.document;
  		}
  	} else
  		attachmentInfo.status = "error";
  	
  	return attachmentInfo;
  },
  
  _getAttachmentInfo : function (tableSysId) {
  	var attachmentInfo = {};
  	var gr = new GlideRecord("sys_attachment");
  	gr.addQuery("table_name", "dms_document_revision");
  	gr.addQuery("table_sys_id", tableSysId);
  	gr.query();
  	if (gr.next()) {
  		attachmentInfo.canRead = gr.canRead();
  		attachmentInfo.document = gr.getUniqueValue();
  		return attachmentInfo;
  	}
  	return null;
  },
  
  attachAcknowledgeDocument : function(tableSysId, table, documentSysId, kbArticleId) {
  	var result = {};
  	result.status = "success";
  	if(documentSysId)
  		new GlideSysAttachment().copy('dms_document_revision', documentSysId, table, tableSysId);
  	else if(kbArticleId){
  		var htmlContent = new global.KBViewModel().getArticleContentBySysId(kbArticleId);
  		var gr = new GlideRecordSecure("kb_knowledge");
  		if(gr.get(kbArticleId)) {
  			var pdfGenerationAPI = new sn_pdfgeneratorutils.PDFGenerationAPI();
  			var response = pdfGenerationAPI.convertToPDFWithHeaderFooter(htmlContent, table, tableSysId, gr.number);
  			if(gs.nil(response.attachment_id))
  				result.status = "error";
  		}
  	}else {
  		result.status = "error";
  		gs.addErrorMessage(gs.getMessage("There was an error signing the document. Please contact your administrator for help."));
  	}
  	
  	return result;
  },
  
  getKBArticle : function(kbNumber) {
  	var kbRecord = {};
  	var gr = new GlideRecordSecure("kb_knowledge");
  	gr.addQuery('number', kbNumber);
  	gr.addQuery('workflow_state', 'published');
  	gr.orderByDesc('sys_updated_on');
  	gr.setLimit(1);
  	gr.query();
  	
  	if(gr.next()) {
  		kbRecord.sys_id = gr.getValue('sys_id');
  		kbRecord.status = "success";
  		var articleGR = new GlideRecord("kb_knowledge");
  		articleGR.get(kbRecord.sys_id);
  		kbRecord.isValid = articleGR.isValidRecord();
  		kbRecord.canRead = articleGR.canRead();
  		if(articleGR.display_attachments)
  			kbRecord.showAttachments = true;
  		kbRecord.article = articleGR.getUniqueValue();
  		kbRecord.text = new global.KBViewModel().getArticleContentBySysId(kbRecord.article);
  		kbRecord.short_description = articleGR.short_description;
  	} else 
  		kbRecord.status = "error";
  	
  	return kbRecord;
  },
  
  setESignTaskFinished : function(acknowledgement_text,
  							esign_type,
  							sys_id,
  							document_revision,
  							kb_article,
  							domain,
  							table_name) {
  	this.saveDocumentAcknowledgement(acknowledgement_text,
  									esign_type,
  									sys_id,
  									document_revision,
  									kb_article,
  									null,
  									domain,
  									table_name,
  									gs.getUserID());
  	
  	this.attachAcknowledgeDocument(sys_id,
  									table_name,
  									document_revision,
  									kb_article);
  	var request = {};
  	request.sys_id = sys_id;
  	request.user_id = gs.getUserID();
  	this.setTaskFinished(request);
  },
  
  getSignatureImage : function(tableName, documentId) {
  	var signImageGR = new GlideRecord('signature_image');
  	signImageGR.addQuery('table', tableName);
  	signImageGR.addQuery('document', documentId);
  	signImageGR.addQuery('user', gs.getUserID());
  	signImageGR.addQuery('active', true);
  	signImageGR.orderByDesc('sys_updated_on');
  	signImageGR.setLimit(1);
  	signImageGR.query();
  	
  	var signImageData = {};
  	if(signImageGR.next()) {
  		signImageData.status = "success";
  		signImageData.sys_id = signImageGR.getValue('sys_id');
  	}
  	else{
  		signImageData.status = "error";
  		gs.addErrorMessage(gs.getMessage("There was an error signing the document. Please contact your administrator for help."));
  	}

  	return signImageData;
  },
  
  type: 'esign_taskUtils'
};

Sys ID

6f22781a77972300a25193df59106146

Offical Documentation

Official Docs: