Name
sn_customerservice.CaseTaskHelper
Description
Contains helper APIs for sn_customerservice_case to Case task (sn_customerservice_task) creation.
Script
var CaseTaskHelper = Class.create();
CaseTaskHelper.prototype = {
initialize: function() {},
/**
* Returns the applicable contacts/accounts/consumers for case task
*/
getCaseTaskEntities: function(caseTaskGr, entityTable, entityField) {
var caseTaskEntities = [];
var parentGr = caseTaskGr.parent.getRefRecord();
if (this._getAllCaseExtensions().indexOf(parentGr.sys_class_name + "") !== -1) {
if (!gs.nil(parentGr.getValue(entityField)))
caseTaskEntities.push(parentGr.getValue(entityField) + "");
var relPartyConfigs = this._getRelatedPartyConfig(parentGr.sys_class_name, entityTable);
return (this._getRelatedParties(relPartyConfigs.join(), parentGr.sys_id, caseTaskEntities, entityTable)).join();
} else
gs.info("No sn_customerservice_case reference in case task parent. Record in case task parent field " + parentGr.sys_id + " is of class - " + parentGr.sys_class_name);
},
_getAllCaseExtensions: function() {
var table = new GlideTableHierarchy(CSMCaseTaskManagementConstants.CASE_TABLE);
return table.getAllExtensions() + "";
},
_getRelatedPartyConfig: function(appliesTo, entityType) {
var relPartyConfigs = [];
var relConfigGr = new GlideRecord(CSMCaseTaskManagementConstants.RELATED_PARTY_CONFIG_TABLE);
relConfigGr.addQuery(CSMCaseTaskManagementConstants.RELATED_PARTY_CONFIG_APPLIES_TO, appliesTo);
relConfigGr.addQuery(CSMCaseTaskManagementConstants.RELATED_PARTY_CONFIG_ENTITY_TYPE, entityType);
relConfigGr.query();
while (relConfigGr.next())
relPartyConfigs.push(relConfigGr.sys_id + "");
return relPartyConfigs;
},
_getRelatedParties: function(partyConfig, caseId, caseTaskEntities, entityTable) {
var relPartyGr = new GlideRecord(CSMCaseTaskManagementConstants.RELATED_PARTY_TABLE);
relPartyGr.addQuery(CSMCaseTaskManagementConstants.RELATED_PARTY_CONFIG, "IN", partyConfig);
relPartyGr.addQuery(CSMCaseTaskManagementConstants.RELATED_PARTY_CASE_RECORD, caseId);
relPartyGr.query();
while (relPartyGr.next())
caseTaskEntities.push(relPartyGr.getValue(this._getRelatedPartyUserField(entityTable)) + "");
return caseTaskEntities;
},
_getRelatedPartyUserField: function(entityTable) {
var entities = CSMCaseTaskManagementConstants.RELATED_PARTY_ENTITIES;
var userField = CSMCaseTaskManagementConstants.RELATED_PARTY_USER_FIELD;
return userField[entities.indexOf(entityTable)];
},
getCaseTaskContacts: function(caseTaskGr) {
return this.getCaseTaskEntities(caseTaskGr, CSMCaseTaskManagementConstants.CUSTOMER_CONTACT_TABLE, CSMCaseTaskManagementConstants.CASE_CONTACT_FIELD);
},
getCaseTaskConsumers: function(caseTaskGr) {
return this.getCaseTaskEntities(caseTaskGr, CSMCaseTaskManagementConstants.CSM_CONSUMER_TABLE, CSMCaseTaskManagementConstants.CASE_CONSUMER_FIELD);
},
getCaseTaskAccounts: function(caseTaskGr) {
return this.getCaseTaskEntities(caseTaskGr, CSMCaseTaskManagementConstants.CUSTOMER_ACCOUNT_TABLE, CSMCaseTaskManagementConstants.CASE_ACCOUNT_FIELD);
},
isCaseExtension: function(table) {
var caseExtns = this._getAllCaseExtensions();
return (caseExtns.indexOf(table) !== -1);
},
clearCaseTaskFields: function(caseTaskGr, clearParentCase) {
if (clearParentCase) {
caseTaskGr.parent_case = CSMCaseTaskManagementConstants.EMPTY_FIELD_VALUE;
}
caseTaskGr.account = CSMCaseTaskManagementConstants.EMPTY_FIELD_VALUE;
caseTaskGr.contact = CSMCaseTaskManagementConstants.EMPTY_FIELD_VALUE;
caseTaskGr.consumer = CSMCaseTaskManagementConstants.EMPTY_FIELD_VALUE;
caseTaskGr.consumer_profile = CSMCaseTaskManagementConstants.EMPTY_FIELD_VALUE;
},
syncCaseTaskFields: function(caseTaskGr, parentSync) {
if (parentSync) {
caseTaskGr.parent_case = caseTaskGr.parent;
} else {
caseTaskGr.parent = caseTaskGr.parent_case;
}
caseTaskGr.account = caseTaskGr.parent.account;
caseTaskGr.contact = caseTaskGr.parent.contact;
caseTaskGr.consumer = caseTaskGr.parent.consumer;
caseTaskGr.consumer_profile = caseTaskGr.parent.consumer_profile;
},
getCaseTaskParamsForRelatedPartyDeletion: function(relatedPartyGr) {
var caseTaskParams = {},
caseTaskLinks = [];
var caseTaskEntity = this._getRelatedPartyEntity(relatedPartyGr.party_config.entity_type);
var relatedPartyEntity = CSMCaseTaskManagementConstants.RELATED_PARTY_USER_FIELD[CSMCaseTaskManagementConstants.CASE_TASK_ENTITY_FIELD.indexOf(caseTaskEntity)];
var caseTaskGr = new GlideRecord(CSMCaseTaskManagementConstants.CASE_TASK_TABLE);
caseTaskGr.addQuery(caseTaskEntity, relatedPartyGr.getValue(relatedPartyEntity));
caseTaskGr.addQuery(CSMCaseTaskManagementConstants.CASE_TASK_PARENT, relatedPartyGr.case_record);
caseTaskGr.query();
while (caseTaskGr.next()) {
if (!caseTaskParams.hasOwnProperty("entityLabel") && caseTaskEntity)
caseTaskParams.entityLabel = caseTaskGr.getElement(caseTaskEntity).getLabel() + "";
var caseTaskLink = "<a href='/" + caseTaskGr.getTableName() + ".do" + "?sys_id=" + caseTaskGr.getUniqueValue() + "'>" + caseTaskGr.number + "</a>";
caseTaskLinks.push(caseTaskLink);
}
if (caseTaskLinks && caseTaskLinks.length > 0) {
caseTaskParams.tasks = caseTaskLinks;
if (relatedPartyGr && relatedPartyGr.getValue(String(relatedPartyEntity)))
caseTaskParams.relatedPartyEntity = String(relatedPartyEntity);
}
return caseTaskParams;
},
_getRelatedPartyEntity: function(entityType) {
var caseTaskEntity = CSMCaseTaskManagementConstants.EMPTY_FIELD_VALUE;
if (String(entityType) == CSMCaseTaskManagementConstants.CUSTOMER_ACCOUNT_TABLE) {
caseTaskEntity = CSMCaseTaskManagementConstants.CASE_ACCOUNT_FIELD;
} else if (String(entityType) == CSMCaseTaskManagementConstants.CUSTOMER_CONTACT_TABLE) {
caseTaskEntity = CSMCaseTaskManagementConstants.CASE_CONTACT_FIELD;
} else if (String(entityType) == CSMCaseTaskManagementConstants.CSM_CONSUMER_TABLE) {
caseTaskEntity = CSMCaseTaskManagementConstants.CASE_CONSUMER_FIELD;
}
return caseTaskEntity;
},
canReadCaseTask: function(sysId) {
var gr = new GlideRecord(CSMCaseTaskManagementConstants.CASE_TASK_TABLE);
gr.addQuery('parent_case', sysId);
gr.query();
while (gr.next()) {
if(gr.canRead()){
return true;
}
}
return false;
},
type: 'CaseTaskHelper'
};
Sys ID
1b312b4953a51110a376ddeeff7b12e7