Name
global.AISARecordProducerUtils
Description
No description available
Script
var AISARecordProducerUtils = Class.create();
AISARecordProducerUtils.prototype = {
_AISA_RP_CONFIG: "aisa_rp_config",
_CXS_RP_CONFIG: "cxs_rp_config",
_AIS_SEARCH_PROFILE: "ais_search_profile",
_SEARCH_CONTEXT_CONFIG: "sys_search_context_config",
_PUBLISHED_STATE: "PUBLISHED",
_SEARCHABLE_TYPES: ["2", "6", "16"],
_MESP_PORTAL_SYS_ID: "26f2fffb77322300454792718a1061e5",
_MOBILE_GLOBAL_SEARCH_CONFIG_SYS_ID: "d259d3d47320330018eea18d4ef6a708",
initialize: function() {
},
isRPConfigExistingOnRP: function(sys_id) {
var rpConfigGr = new GlideRecord(this._AISA_RP_CONFIG);
rpConfigGr.addQuery('sc_cat_item', sys_id);
rpConfigGr.addActiveQuery();
rpConfigGr.query();
return rpConfigGr.hasNext();
},
getRPConfigByRPId: function(rpSysId) {
var rpConfigGr = new GlideRecord(this._AISA_RP_CONFIG);
rpConfigGr.addQuery('sc_cat_item', rpSysId);
rpConfigGr.addActiveQuery();
rpConfigGr.query();
if (!rpConfigGr.next())
return null;
var searchSourceTableMap = {};
var searchSourceM2MGr = new GlideRecord('ais_search_profile_ais_search_source_m2m');
searchSourceM2MGr.addQuery('profile', rpConfigGr.search_app.search_profile + '');
searchSourceM2MGr.query();
while (searchSourceM2MGr.next()) {
var searchSourceGr = new GlideRecord('ais_search_source');
if (searchSourceGr.get(searchSourceM2MGr.getValue('search_source')))
searchSourceTableMap[searchSourceGr.getUniqueValue()] = searchSourceGr.datasource.source + '';
}
return {
appId: rpConfigGr.search_app.application_id + '',
searchApp: rpConfigGr.getValue("search_app"),
searchProfile: rpConfigGr.search_app.search_profile + '',
headerText: rpConfigGr.getDisplayValue("header_text"),
searchVariable: rpConfigGr.getValue("search_variable"),
resultsPerPage: parseInt(rpConfigGr.getValue("results_per_page")),
allowExpandCollapse: !!rpConfigGr.allow_expand_collapse,
searchSourceTableMap: searchSourceTableMap
};
},
getVariableIds: function(gr) {
var sysIds = [];
if (!gr)
return sysIds;
var variableGr = new GlideRecord("item_option_new");
variableGr.addQuery("sys_id", "IN", this.getCatItemVariableIds(gr));
variableGr.query();
while (variableGr.next())
sysIds.push(variableGr.getUniqueValue());
return sysIds;
},
getCatItemVariableIds: function(gr) {
var sysIds = [];
if (!gr)
return sysIds;
var catItemId = gr.getValue("sc_cat_item");
var catItemGr = new GlideRecord("sc_cat_item");
if (!catItemGr.get(catItemId))
return sysIds;
var catItemObj = GlideappCatalogItem.get(catItemId);
var varsGr = catItemObj.getStandaloneVariables();
while (varsGr.next())
if (this._SEARCHABLE_TYPES.indexOf(varsGr.type + "") >= 0)
sysIds.push(varsGr.getUniqueValue());
return sysIds;
},
getRPVariable: function(gr) {
var varGr = new GlideRecord("item_option_new");
varGr.addQuery("cat_item", gr.sc_cat_item);
varGr.addQuery("name", "ai_search_assist");
varGr.query();
return (varGr.next() ? varGr : null);
},
addToRecordProducer: function(gr) {
if (this.getRPVariable(gr))
return false;
var maxVarOrderGa = new GlideAggregate("item_option_new");
maxVarOrderGa.addQuery("cat_item", gr.sc_cat_item);
maxVarOrderGa.addAggregate("MAX", "order");
maxVarOrderGa.groupBy("cat_item");
maxVarOrderGa.query();
var order = 100;
if (maxVarOrderGa.next())
order = (maxVarOrderGa.getAggregate("MAX", "order") - 0) + 100;
var varGr = new GlideRecord("item_option_new");
varGr.type = 14; // Macro;
varGr.sp_widget = "66135172671e1010b3d782f45685ef9e";
varGr.cat_item = gr.sc_cat_item;
varGr.display_title = false;
varGr.question_text = "AI Search Assist";
varGr.name = "ai_search_assist";
varGr.order = order;
varGr.insert();
return true;
},
removeFromRecordProducer: function(aisaRPConfig) {
var aisaRecProdConfigs = new GlideRecord(this._AISA_RP_CONFIG);
aisaRecProdConfigs.addQuery("cat_item", aisaRPConfig.sc_cat_item);
aisaRecProdConfigs.addQuery("sys_id", "!=", aisaRPConfig.getUniqueValue());
aisaRecProdConfigs.query();
if (aisaRecProdConfigs.next())
return false; // do not delete the variable if there are other aisa record producer configs for that record producer
var rpVar = this.getRPVariable(aisaRPConfig);
if (!rpVar)
return false;
return rpVar.deleteRecord();
},
useAISARecordProducerConfig: function(catItemId) {
if (!catItemId) {
return false;
}
var aisaRPConfig = new GlideRecord(this._AISA_RP_CONFIG);
aisaRPConfig.get("sc_cat_item", catItemId);
var useAISA = false;
if (aisaRPConfig.isValidRecord()) {
var isActive = !!aisaRPConfig.active;
var isPublished = false;
var searchProfileSysID = aisaRPConfig.search_app.search_profile;
var searchProfile = new GlideRecord(this._AIS_SEARCH_PROFILE);
if (searchProfileSysID && searchProfile.get(searchProfileSysID)) {
isPublished = (!!searchProfile.active && (searchProfile.state == this._PUBLISHED_STATE));
}
useAISA = isActive && isPublished;
}
return useAISA;
},
isMesp: function(portalSysId) {
// check if the accessed portal is Mobile Employee Service Portal
return (portalSysId == this._MESP_PORTAL_SYS_ID);
},
getNowMobileSearchEngine: function() {
var searchEngine = '';
var mobileSearchConfig = new GlideRecord('sys_sg_global_search');
if (mobileSearchConfig.get(this._MOBILE_GLOBAL_SEARCH_CONFIG_SYS_ID)) {
// Access the Search Application to return the Search Engine type
var searchContextConfig = mobileSearchConfig.search_context_config;
if (searchContextConfig)
searchEngine = searchContextConfig.search_engine;
}
return searchEngine;
},
checkForDuplicateRPC: function(rpcRecord) {
if (!rpcRecord)
return false;
var config = new GlideRecord(this._AISA_RP_CONFIG);
config.addQuery("sc_cat_item", rpcRecord.getValue("sc_cat_item"));
config.addQuery("sys_id", "!=", rpcRecord.getUniqueValue());
/* only use "setLimit" if process separation is disabled for domains - there's potential for a query with setLimit to return no data due to overriden records being removed from the query results */
if (!GlideDomainSupport.isProcessSeparationEnabled())
config.setLimit(1);
config.query();
return config.hasNext();
},
type: 'AISARecordProducerUtils'
};
Sys ID
586cbec7675a1010b3d782f45685ef5f