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