Name
sn_customerservice.CSMServiceManagementUtil
Description
Generic util File for all the Case to Service Management integration Integration functions. Contains API which are used across all service management entities.
Script
var CSMServiceManagementUtil = Class.create();
CSMServiceManagementUtil.CASE_TABLE = "sn_customerservice_case";
CSMServiceManagementUtil.CHANGE = "change";
CSMServiceManagementUtil.PROBLEM = "problem";
CSMServiceManagementUtil.REQUESTS = "requests";
CSMServiceManagementUtil.PROJECT_CHANGE = "project_change";
CSMServiceManagementUtil.ISSUE = "issue";
CSMServiceManagementUtil.REQUEST_PLUGIN_ID = "com.sn_cs_sm_request";
CSMServiceManagementUtil.SERVICE_MGMT_PLUGIN_ID = "com.sn_cs_sm";
CSMServiceManagementUtil.CSM_PPM_PLUGIN_ID = "com.snc.csm_ppm";
CSMServiceManagementUtil.CSM_COMPLAINT_PLUGIN_ID = "com.sn_csm_complaint_caseflow";
CSMServiceManagementUtil.CONTRIBUTOR_USER_PLUGIN = "com.snc.csm_contributor_user";
CSMServiceManagementUtil.prototype = {
initialize: function() {},
getRelatedRecordsAssociatedToCase: function(caseGr) {
var relatedRecords = {};
if (GlidePluginManager.isActive(CSMServiceManagementUtil.SERVICE_MGMT_PLUGIN_ID)) {
if (!gs.nil(caseGr.change))
relatedRecords[CSMServiceManagementUtil.CHANGE] = this._getChange(caseGr);
if (!gs.nil(caseGr.problem))
relatedRecords[CSMServiceManagementUtil.PROBLEM] = this._getProblem(caseGr);
}
if (GlidePluginManager.isActive(CSMServiceManagementUtil.REQUEST_PLUGIN_ID)) {
var associatedRequests = this._getRequests(caseGr);
if (!gs.nil(associatedRequests)) {
relatedRecords[CSMServiceManagementUtil.REQUESTS] = associatedRequests;
}
}
if (GlidePluginManager.isActive(CSMServiceManagementUtil.CSM_PPM_PLUGIN_ID)) {
if (!gs.nil(caseGr.project_change_request))
relatedRecords[CSMServiceManagementUtil.PROJECT_CHANGE] = this._getProjectChange(caseGr);
if (!gs.nil(caseGr.issue))
relatedRecords[CSMServiceManagementUtil.ISSUE] = this._getIssue(caseGr);
}
return relatedRecords;
},
_getChange: function(caseGr) {
return new sn_cs_sm.ServiceManagementChangeUtils().getChangeRequestForCase(caseGr);
},
_getProblem: function(caseGr) {
return new sn_cs_sm.ServiceManagementProblemUtils().getProblemForCase(caseGr);
},
_getRequests: function(caseGr) {
return new sn_cs_sm_request.ServiceManagementRequestUtils().getRequestsAssociatedToCase(caseGr.sys_id);
},
_getProjectChange: function(caseGr) {
if (GlidePluginManager.isActive(CSMServiceManagementUtil.CSM_PPM_PLUGIN_ID)) {
return new sn_csm_ppm.CSMProjectManagementUtil().getProjectChangeRequestForCase(caseGr);
}
},
_getIssue: function(caseGr) {
if (GlidePluginManager.isActive(CSMServiceManagementUtil.CSM_PPM_PLUGIN_ID)) {
return new sn_csm_ppm.CSMProjectManagementUtil().getIssueForCase(caseGr);
}
},
getMyListsMenu: function() {
var list = [];
var myListFilters = [gs.getMessage("All Cases"), gs.getMessage("Action Needed"), gs.getMessage("My Cases"), gs.getMessage("My Case Tasks")];
var query = [null, "stateIN6,18", "initiated_as_request=false", null];
var filters = ['all', 'act_needed', 'my_issues', 'my_case_tasks'];
if (GlidePluginManager.isActive(CSMServiceManagementUtil.REQUEST_PLUGIN_ID)) {
// if request plugin is active, then add My requests
myListFilters.push(gs.getMessage("My Requests"));
query.push("initiated_as_request=true");
filters.push("my_req");
}
if (GlidePluginManager.isActive(CSMServiceManagementUtil.CSM_PPM_PLUGIN_ID)) {
// check if there are any project tasks assigned to the user
var userHasTasks = new sn_csm_ppm.CSMProjectManagementSecurityUtil().hasProjectTaskAssigned();
if (gs.hasRole("sn_customerservice.customer") && userHasTasks) {
myListFilters.push(gs.getMessage("My Project Tasks"));
filters.push('my_tasks');
var currentUser = gs.getUserID();
var queryForMyTasks = "assigned_to=" + currentUser;
query.push(queryForMyTasks);
}
}
if (GlidePluginManager.isActive(CSMServiceManagementUtil.CSM_COMPLAINT_PLUGIN_ID)) {
//if Complaint Handling plugin is active, then add My Complaints
myListFilters.push(gs.getMessage("My Complaints"));
filters.push('my_complaints');
query.push("initiated_as_request=false");
}
if (GlidePluginManager.isActive(CSMServiceManagementUtil.CONTRIBUTOR_USER_PLUGIN) && !gs.getUser().hasRole("admin")) {
// Special lists for account contributors
if (gs.getUser().hasRole("sn_customerservice.account_contributor")) {
myListFilters.push(gs.getMessage("Cases for Accounts"));
filters.push('my_account_cases');
query.push("active=true^accountISNOTEMPTY");
}
// Special lists for consumer contributors
if (gs.getUser().hasRole("sn_customerservice.consumer_contributor")) {
myListFilters.push(gs.getMessage("Cases for Consumers"));
filters.push('my_consumer_cases');
query.push("active=true^consumerISNOTEMPTY");
}
// Special lists for self contributors
if (gs.getUser().hasRole("sn_customerservice.self_contributor")) {
myListFilters.push(gs.getMessage("Cases for Myself"));
filters.push('my_self_cases');
var finalQueryForSelfContributor = "active=true^internal_userDYNAMIC90d1921e5f510100a9ad2572f2b477fe";
if(this.canUserAccessField("sn_customerservice_case", "account"))
finalQueryForSelfContributor+="^accountISEMPTY";
if(this.canUserAccessField("sn_customerservice_case", "consumer"))
finalQueryForSelfContributor+="^consumerISEMPTY";
if(gs.tableExists('sn_customer_service_organization'))
finalQueryForSelfContributor += "^requesting_service_organizationISEMPTY";
query.push(finalQueryForSelfContributor);
}
// Special lists for service org contributors
if (gs.getUser().hasRole("sn_customerservice.service_organization_contributor")) {
myListFilters.push(gs.getMessage("My Cases for Business Locations"));
filters.push('my_cases_for_my_orgs');
var myCasesQuery = "active=true^requesting_service_organizationDYNAMIC93b2cbfe0fa210103ff81b41ff767e85^internal_userDYNAMIC90d1921e5f510100a9ad2572f2b477fe";
if(this.canUserAccessField("sn_customerservice_case", "account"))
myCasesQuery+="^accountISEMPTY";
if(this.canUserAccessField("sn_customerservice_case", "consumer"))
myCasesQuery+="^consumerISEMPTY";
query.push(myCasesQuery);
myListFilters.push(gs.getMessage("All Cases for Business Locations"));
filters.push('all_cases_for_my_orgs');
var allCasesQuery = "active=true^requesting_service_organizationDYNAMIC93b2cbfe0fa210103ff81b41ff767e85";
if(this.canUserAccessField("sn_customerservice_case", "account"))
allCasesQuery+="^accountISEMPTY";
if(this.canUserAccessField("sn_customerservice_case", "consumer"))
allCasesQuery+="^consumerISEMPTY";
query.push(allCasesQuery);
}
// Special lists for relationship contributors
if (gs.getUser().hasRole("sn_customerservice.relationship_contributor")) {
myListFilters.push(gs.getMessage("My Cases for Accounts"));
filters.push('my_cases_for_my_accounts');
var myAccountCasesQuery = "active=true^internal_userDYNAMIC90d1921e5f510100a9ad2572f2b477fe";
if(this.canUserAccessField("sn_customerservice_case", "account"))
myAccountCasesQuery+="^accountISNOTEMPTY";
query.push(myAccountCasesQuery);
myListFilters.push(gs.getMessage("All Cases for Accounts"));
filters.push('all_cases_for_my_accounts');
var allAccountCasesQuery = "active=true";
if(this.canUserAccessField("sn_customerservice_case", "account"))
allAccountCasesQuery+="^accountISNOTEMPTY";
query.push(allAccountCasesQuery);
myListFilters.push(gs.getMessage("My Cases for Consumers"));
filters.push('my_cases_for_my_consumers');
var myConsumerCasesQuery = "active=true^internal_userDYNAMIC90d1921e5f510100a9ad2572f2b477fe";
if(this.canUserAccessField("sn_customerservice_case", "consumer"))
myConsumerCasesQuery+="^consumerISNOTEMPTY";
query.push(myConsumerCasesQuery);
myListFilters.push(gs.getMessage("All Cases for Consumers"));
filters.push('all_cases_for_my_consumers');
var allConsumerCasesQuery = "active=true";
if(this.canUserAccessField("sn_customerservice_case", "consumer"))
allConsumerCasesQuery+="^consumerISNOTEMPTY";
query.push(allConsumerCasesQuery);
}
}
for (var counter = 0; counter < myListFilters.length; counter++) {
var queryparams = {};
if (filters[counter] == "my_tasks") {
queryparams.table = "customer_project_task";
queryparams.view = "csp";
queryparams.targetPageId = "project_task_detail";
} else if (filters[counter] == "my_complaints") {
queryparams.table = "sn_complaint_case";
queryparams.view = "csp";
queryparams.targetPageId = "csm_ticket";
} else if (filters[counter] == "my_case_tasks") {
queryparams.table = "sn_customerservice_task";
queryparams.view = "csp";
queryparams.targetPageId = "csm_case_task_ticket";
} else {
queryparams.table = "sn_customerservice_case";
queryparams.targetPageId = "csm_ticket";
if (gs.getUser().hasRole("sn_customerservice.case_contributor_creator") && !gs.getUser().hasRole("admin")) {
queryparams.view = "contributor";
if(filters[counter] == 'my_account_cases' || filters[counter] == 'my_cases_for_my_accounts' || filters[counter] == 'all_cases_for_my_accounts')
queryparams.view = "account_contributor";
else if(filters[counter] == 'my_consumer_cases' || filters[counter] == 'my_cases_for_my_consumers' || filters[counter] == 'all_cases_for_my_consumers')
queryparams.view = "consumer_contributor";
else if(filters[counter] == 'my_cases_for_my_orgs' || filters[counter] == 'all_cases_for_my_orgs')
queryparams.view = "service_org_contributor";
else if(filters[counter] == 'my_self_cases')
queryparams.view = "self_contributor";
} else {
queryparams.view = "csp";
}
}
queryparams.myListFilter = myListFilters[counter];
queryparams.query = query[counter];
queryparams.selectedFilter = filters[counter];
list.push(queryparams);
}
return list;
},
canUserAccessField: function(table, field) {
return new global.CSMContributorUtil().canAccessField(table, field);
},
type: 'CSMServiceManagementUtil'
};
Sys ID
61f86bca875723003c1c8467a7cb0bb0