Name

global.CSPUtils

Description

Helper functions for Consumer Portal

Script

var CSPUtils = Class.create();
CSPUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  ROLE_CONSUMER_ADMIN   : 'sn_customerservice.customer_admin',
  ROLE_CONSUMER		  : 'sn_customerservice.customer',
  ROLE_CONSUMER_AGENT	  : 'sn_customerservice_agent',
  TABLE_CONSUMER        : 'csm_consumer',
  TABLE_SERVICE_ENTITLEMENT : 'service_entitlement',
  TABLE_AST_CONTRACT 	  : 'ast_contract',
  TABLE_ALM_ASSET    	  : 'alm_asset',
  TABLE_CS_CASE 		  : 'sn_customerservice_case',
  TABLE_PRODUCT         : 'cmdb_model',
  	
  
  getConsumerAssetForProduct : function(productId){
  	var gr = new GlideRecord(this.TABLE_ALM_ASSET);
  	gr.addQuery("primary_contact.consumer",gs.getUser().getName());
  	gr.addQuery("model", productId);
  	gr.query();
  	if(gr.next()){
  		return gr.getUniqueValue();
  	}
  	return '';
  	
  },
  
  getProductForConsumer : function(){
  	var gr = new GlideRecord(this.TABLE_ALM_ASSET);
  	gr.addQuery("primary_contact.consumer",gs.getUser().getName());
  	gr.query();
  	var models = ['-1'];
  	while(gr.next()){
  		models.push(gr.getValue('model'));
  	}
  	return models;
  },
  

  
  createAsset : function(productId,serialNum,date){
  	if(!gs.nil(productId)) {
  		var product = new GlideRecord(this.TABLE_PRODUCT);
  		product.get(productId);
  		var gr = new GlideRecord(this.TABLE_ALM_ASSET);
  		gr.initialize();
  		gr.setValue('model',productId);
  		if(!gs.nil(date))
  			gr.setValue("install_date",date);
  		if(!gs.nil(serialNum))
  			gr.setValue('serial_number',serialNum);	gr.setValue('model_category',product.getValue('cmdb_model_category'));
  		//gr.setValue('primary_contact',gs.getUserID());
  		gr.setValue('consumer',new global.CSManagementUtils().getConsumerId());
  		return gr.insert();
  	}
  },
  
  //check consumer reached open case limit
  canCreateCase : function(max) {

  	var allowed_count = max || parseInt(gs.getProperty('sn_customerservice.consumer_max_new_cases_daily', 25));
  	var count = new GlideAggregate('sn_customerservice_case');
  	count.addEncodedQuery('sys_created_onONToday@javascript:gs.daysAgoStart(0)@javascript:gs.daysAgoEnd(0)');
  	count.addQuery('sys_created_by', gs.getUserName());				
  	count.addAggregate('COUNT');
  	count.query();

  	var caseCount = 0;
  	if (count.next())
  		caseCount = parseInt(count.getAggregate('COUNT'));

  	if (caseCount >= allowed_count)
  		return false;
  	else
  		return true;
  	
  },
  
  //check consumer reached asset/product limit
  canCreateAsset : function() {
  	var consumerId = new global.CSManagementUtils().getConsumerId();	
  	if (gs.nil(consumerId)) {
  		//gs.addErrorMessage(gs.getMessage("Consumer not found"));
  		return false;
  	}			
  	
  	var allowed_count = parseInt(gs.getProperty('sn_customerservice.consumer_max_products', 5));
  	var count = new GlideAggregate('alm_asset');
  	count.addQuery('consumer', consumerId);
  	count.addAggregate('COUNT');
  	count.query();
  	var assetCount = 0;
  	if (count.next())
  		assetCount = parseInt(count.getAggregate('COUNT'));
  	
  	if (assetCount >= allowed_count)
  		return false;
  	else
  		return true;		
  },	
  
  type: 'CSPUtils'
});

Sys ID

e62eb18bc332120095ccd02422d3aefe

Offical Documentation

Official Docs: