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

Offical Documentation

Official Docs: