Name
global.DocumentApproverHelper
Description
This class contains logics around the document approver. All the methods will apply to the document that is passed to the constructor.
Script
var DocumentApproverHelper = Class.create();
DocumentApproverHelper.prototype = {
initialize: function(documentId) {
this.documentId = documentId;
this.approvalMatcher = new DocumentManagementApprovalMatcher(this.documentId);
this.db = new DocumentManagementDB();
},
refreshApproverList: function() {
this._deleteApproverGeneratedBySystem();
var userApprovers = this.approvalMatcher.getUserApprovers();
var groupApprovers = this.approvalMatcher.getGroupApprovers();
for (var i = 0; i < userApprovers.length; i++) {
var userApprover = this.convertRuleApproverToDocumentApprover(userApprovers[i]);
this.db.insert(userApprover, this.db.approval_sequence_table);
}
for (var i = 0; i < groupApprovers.length; i++) {
// var groupApprover = this.convertRuleGroupApproverToDocumentGroupApprover(groupApprovers[i]);
// db.insert(groupApprover, this.db.approval_sequence_table);
this.refreshDocumentGroupApproverMembers(groupApprovers[i]);
}
},
/**
* Add every group member to the approver list .
*/
refreshDocumentGroupApproverMembers: function(ruleGroupApprover) {
var groupmemember = new GlideRecord('sys_user_grmember');
groupmemember.addQuery('group', ruleGroupApprover.group);
groupmemember.query();
while (groupmemember.next()) {
var groupApprover = new Object();
groupApprover.table_name = this.db.document_table;
groupApprover.document_id = this.documentId;
groupApprover.group = ruleGroupApprover.group;
groupApprover.user = groupmemember.user;
groupApprover.generated_by = "system";
groupApprover.sequence = ruleGroupApprover.sequence;
this.db.insert(groupApprover, this.db.approval_sequence_table);
}
},
_deleteApproverGeneratedBySystem: function() {
var approvers = this.db.getApprovers(this.documentId, "system");
var approverIds = new Array();
for (var i = 0; i < approvers.length; i++) {
approverIds.push(approvers[i].sys_id);
}
this.db.deleteRecord(this.db.approval_sequence_table, "sys_id", approverIds);
},
/**
* Convert a rule approver object retrieved from the m2m_approval_rule_user to a document approver.
*
* @param Object ruleApprover
* @returns Object userApprover
*/
convertRuleApproverToDocumentApprover: function(ruleApprover) {
var userApprover = new Object();
userApprover.table_name = this.db.document_table;
userApprover.document_id = this.documentId;
userApprover.user = ruleApprover.user;
userApprover.sequence = ruleApprover.sequence;
userApprover.generated_by = "system";
return userApprover;
},
/**
* Convert a rule group approver object retrieved from the m2m_approval_rule_user to a document group approver.
*
* @param Object ruleGroupApprover
* @returns Object groupApprover
*/
convertRuleGroupApproverToDocumentGroupApprover: function(ruleGroupApprover) {
var groupApprover = new Object();
groupApprover.table_name = this.db.document_table;
groupApprover.document_id = this.document_id;
groupApprover.group = ruleGroupApprover.group;
groupApprover.generated_by = "system";
groupApprover.sequence = ruleGroupApprover.sequence;
return groupApprover;
}
};
Sys ID
961724850a0a2c3512e2c9702b5a1e0f