Name

sn_install_base.CSMRelationshipService_InstallBaseRelatedParty

Description

Implements extension point global.CSMRelationshipServiceEP Extension point for CSM Relationship framework.

Script

var CSMRelationshipService_InstallBaseRelatedParty = Class.create();
CSMRelationshipService_InstallBaseRelatedParty.prototype = Object.extendsObject(global.CSMRelationshipService, {

  /*
   * Return true if this SI is able to handle the services required for given relationship.
  */
  canProcess: function(relationship) {
  	if(gs.nil(relationship))
  		return false;
  	return relationship == global.CSMRelationshipConstants.RELATIONSHIP_INSTALL_BASE_RELATED_PARTY;
  },
  
  _addAdditionalCriteriaIB: function(relationshipGR) {
  	if (this.context.current && !gs.nil(this.context.current.install_base_item)) {
  		relationshipGR.addQuery(global.CSMRelationshipConstants.FIELD_INSTALL_BASE_ITEM, this.context.current.install_base_item);
  	}
  },
  
  _addAdditionalCriteriaAffectedIBs: function(relationshipGR) {
  	if (this.context.current && this._isChildOf(global.CSMBaseConstants.CASE_TABLE, this.context.current.getTableName())) {
  		var affectedIBs = new sn_install_base.InstallBaseUtil().getAffectedIBsForCase(this.context.current.sys_id).join();
  		relationshipGR.addQuery(global.CSMRelationshipConstants.FIELD_INSTALL_BASE_ITEM, "IN", affectedIBs);
  		return;
  	}
  },
  
  _addAdditionalAccountCriteria: function(relationshipGR) {
  	if (this.__getAdditionalParam(global.CSMRelationshipConstants.IS_ACCOUNT_QUERY)) {
  		relationshipGR.addNullQuery(global.CSMRelationshipConstants.FIELD_CONTACT);
  		relationshipGR.addNullQuery(global.CSMRelationshipConstants.FIELD_CONSUMER);
  		relationshipGR.addNullQuery(global.CSMRelationshipConstants.DEFAULT_PERSONA_FIELD);
  		relationshipGR.addNotNullQuery(global.CSMRelationshipConstants.FIELD_ACCOUNT);
  		this.accountUtil = this._getAccountHelper();
  		relationshipGR.addQuery(global.CSMRelationshipConstants.FIELD_ACCOUNT, this.accountUtil.getUserAccount());
  	}
  },
  
  _addAdditionalSvcOrgCriteria: function(relationshipGR) {
  	if (this.__getAdditionalParam(global.CSMRelationshipConstants.IS_SVC_ORG_QUERY)) {
  		relationshipGR.addNullQuery(global.CSMRelationshipConstants.FIELD_CONTACT);
  		relationshipGR.addNullQuery(global.CSMRelationshipConstants.FIELD_CONSUMER);
  		relationshipGR.addNullQuery(global.CSMRelationshipConstants.DEFAULT_PERSONA_FIELD);
  		relationshipGR.addNotNullQuery(global.CSMRelationshipConstants.FIELD_SERVICE_ORGANIZATION);
  		this.SOUtil = this._getSOHelper();
  		relationshipGR.addQuery(global.CSMRelationshipConstants.FIELD_SERVICE_ORGANIZATION, "IN",this.SOUtil.getUserServiceOrgIds(gs.getUserID()).join(','));
  	}
  },

  /*
   * Generate persona query as userISME OR contactISME OR consumerISME
  */
  _addPersonaCriteria: function(relationshipGR) {
  	var userId =  gs.getUserID();
  	var personaQuery = relationshipGR.addQuery(global.CSMRelationshipConstants.DEFAULT_PERSONA_FIELD, userId);

  	if(gs.hasRole(global.CSMRelationshipConstants.ROLE_CONTACT)) {
  		if(!gs.nil(personaQuery)) personaQuery.addOrCondition(global.CSMRelationshipConstants.FIELD_CONTACT, userId);
  		else personaQuery = relationshipGR.addQuery(global.CSMRelationshipConstants.FIELD_CONTACT, userId);
  	}

  	if (gs.hasRole(global.CSMRelationshipConstants.ROLE_CONSUMER)) {
  		var loggedInConsumerId = new global.CSManagementUtils().getConsumerId();
  		if(!gs.nil(personaQuery)) personaQuery.addOrCondition(global.CSMRelationshipConstants.FIELD_CONSUMER, loggedInConsumerId);
  		else relationshipGR.addQuery(global.CSMRelationshipConstants.FIELD_CONSUMER, loggedInConsumerId);
  	}
  },
  
  _addAdditionalCriteria: function(relationshipGR) {
  	this._addAdditionalAccountCriteria(relationshipGR);
  	this._addAdditionalSvcOrgCriteria(relationshipGR);
  	this._addAdditionalCriteriaAffectedIBs(relationshipGR);
  	this._addAdditionalCriteriaIB(relationshipGR);
  },
  

  type: 'CSMRelationshipService_InstallBaseRelatedParty'
});

Sys ID

20f3b6c623311110e32f13d1d7bf6597

Offical Documentation

Official Docs: