Name
global.ActivityFacetDAO
Description
Gets installed as part of com.snc.activity_subscriptions plugin Activity Subscriptions Framework. Contains all the methods to perform Activity Facet related operations.
Script
var ActivityFacetDAO = Class.create();
ActivityFacetDAO.prototype = {
initialize: function(activitySubContext) {
this.ActivityContextDao = new ActivityContextDao(activitySubContext);
this.cache = new ActivityContextCache();
},
getFacetsInfo: function(actContext, sysId, additionalParams) {
var activityFacets = new GlideRecord(ActivityConstants.TABLE_ACTIVITY_FACET);
if (additionalParams.facetIds)
activityFacets.addQuery('sys_id', 'IN', additionalParams.facetIds);
activityFacets.addQuery('subobject.activity_context', actContext);
activityFacets.addActiveQuery();
activityFacets.orderBy('order');
activityFacets.addQuery('module', additionalParams.module);
activityFacets.query();
var activityFacetsInfo = [];
var currentStaticInfo = {
"currStaticGroup": '',
"currStaticGroupLabel": ''
};
//If session cache is not available, building all the config related cache for first time, currenlty not doing changes for dynamic building of cache.
//Reason: If entire cache is not built, for first dynamic child can build it's cahce, but the subsequent facets try to fech from existing cache based on only context id and not based on the facet id or activity type or source mapping which results in empty objects,it founds context id object but it won't have all the data.
this.cache.buildCache(actContext, additionalParams.module);
while (activityFacets.next()) {
if (activityFacets.getValue('facet_type') == ActivityConstants.DYNAMIC_FACET) {
currentStaticInfo.currStaticGroup = '';
currentStaticInfo.currStaticGroupLabel = '';
this._buildDynamicFacetInfo(actContext, activityFacetsInfo, activityFacets, additionalParams);
} else
this._buildStaticFacetInfo(actContext, activityFacetsInfo, activityFacets, currentStaticInfo, additionalParams);
}
return activityFacetsInfo;
},
_buildDynamicFacetInfo: function(actContext, activityFacetsInfo, activityFacets, additionalParams) {
var facetInfo = {
'name': activityFacets.name + '',
'is_dynamic': true,
'facets': [activityFacets.sys_id + ''],
'icon': activityFacets.icon + '',
'children': []
};
//fetch dynamic child info, if lazyLoad is true
if (additionalParams.lazyLoad != 'true') {
facetInfo.children = this._fetchActivitiesInfo(actContext, false, activityFacets, additionalParams);
if (additionalParams.getActCount == 'true')
facetInfo['activity_count'] = facetInfo.children.length;
}
activityFacetsInfo.push(facetInfo);
},
_buildStaticFacetInfo: function(actContext, activityFacetsInfo, activityFacets, currentStaticInfo, additionalParams) {
var group = activityFacets.facet_group.getDisplayValue() + '';
if (!currentStaticInfo.currStaticGroup || group != currentStaticInfo.currStaticGroupLabel) {
currentStaticInfo.currStaticGroupLabel = group;
currentStaticInfo.currStaticGroup = {
"name": currentStaticInfo.currStaticGroupLabel,
'is_dynamic': false,
'facets': [],
'children': []
};
if (additionalParams.lazyLoad != 'true' && additionalParams.getActCount == 'true')
currentStaticInfo.currStaticGroup['activity_count'] = 0;
activityFacetsInfo.push(currentStaticInfo.currStaticGroup);
}
var facetInfo = {
"title": activityFacets.name + '',
'facet': activityFacets.sys_id + '',
'icon': activityFacets.icon + '',
};
if (additionalParams.lazyLoad != 'true' && additionalParams.getActCount == 'true') {
var activityCount = this._fetchActivitiesInfo(actContext, true, activityFacets, additionalParams);
facetInfo['activity_count'] = activityCount;
currentStaticInfo.currStaticGroup['activity_count'] += activityCount;
}
if (!currentStaticInfo.currStaticGroup.name) {
currentStaticInfo.currStaticGroup.name = facetInfo.title;
currentStaticInfo.currStaticGroup['icon'] = facetInfo.icon;
} else
currentStaticInfo.currStaticGroup.children.push(facetInfo);
currentStaticInfo.currStaticGroup.facets.push(facetInfo.facet);
},
_fetchActivitiesInfo: function(actContext, isStaticFacet, activityFacets, additionalParams) {
var facetDataToFetchActivities;
if (!isStaticFacet) {
var fieldList = activityFacets.subobject_fields + '';
facetDataToFetchActivities = {
"titleField": activityFacets.title_field + '',
"fieldList": (fieldList) ? fieldList.split(',') : [],
"isStaticFacet": false
};
}
else
facetDataToFetchActivities = {
"isStaticFacet": true
};
var subobject = activityFacets.subobject;
if (subobject) subobject = subobject.subobject;
if (subobject)
facetDataToFetchActivities["subObjectTable"] = subobject.table_name + '';
var actReqObj = {
"contextId": actContext,
"actualContextGr": this.contextGR,
"facetIds": activityFacets.sys_id + '',
"facetInfo": facetDataToFetchActivities,
'startDate': additionalParams.startDate,
'endDate': additionalParams.endDate,
'module': additionalParams.module
};
return this.ActivityContextDao.getActivities(actReqObj);
},
getActivityContextInfo: function(actContext, sysId) {
var activityContext = new GlideRecord(ActivityConstants.TABLE_ACTIVITY_CONTEXT);
activityContext.addActiveQuery();
activityContext.addQuery('sys_id', actContext);
activityContext.addQuery('module.active', true);
activityContext.query();
if (activityContext.next()) {
var contextTable = activityContext.context_table + '';
var contextInfo = new GlideRecord(contextTable);
contextInfo.addQuery('sys_id', sysId);
//Do not run BRs, customer_contact has a query BR which is skipping inactive users.
contextInfo.setWorkflow(false);
contextInfo.query();
if (contextInfo.next()) {
this.contextGR = contextInfo;
return {
'context_name': activityContext.name + '',
'context_table': contextTable,
'context_id': actContext,
'module': activityContext.module + ''
};
}
return;
}
return;
},
getActContextSubObjects: function(actContext) {
var actContextSubObj = new GlideRecord(ActivityConstants.TABLE_M2M_CONTEXT_SUBOBJECT);
actContextSubObj.addQuery('activity_context', actContext);
actContextSubObj.query();
var actContextSubObjList = [];
while (actContextSubObj.next())
actContextSubObjList.push(actContextSubObj.sys_id + '');
return actContextSubObjList;
},
type: 'ActivityFacetDAO'
};
Sys ID
03ae1b1b0f8b0010e6d4fd820b767ed6