Name

global.ActivityContextServiceSNC

Description

Gets installed as part of com.snc.activity_subscriptions plugin Activity Subscriptions Framework. An implementation class to perform activity related operations based on Activity Context

Script

var ActivityContextServiceSNC = Class.create();
ActivityContextServiceSNC.prototype = {
  initialize: function(activitySubContext) {
  		this.activityContextDao = new ActivityContextDao(activitySubContext);
  },

  /* 
   * This method returns Activities from multiple source tables based on the given context and activity type definitions
   * @parameter - contextId: sys_id of a record in the Activity Context table
   * @parameter - contextInstanceId: sys_id of a record in the context instance table, ex: sys_id of a contact
   * @parameter - facetIds: comma separated list of facet sys_ids
   * @parameter - recordId: sys_id of a record, applicable in case of dynamic facets
   */
  getActivities: function(reqObj) {
      if (!reqObj.contextId || !reqObj.contextInstanceId) {
          return {
              "status": 400,
              "message": gs.getMessage("Make sure a valid context and context_instance are passed")
          };
      }
      reqObj.pageStart = parseInt(reqObj.stFrom);
      reqObj.pageEnd = parseInt(reqObj.last);
      if (reqObj.pageStart >= 0 && reqObj.pageEnd >= 0 && reqObj.pageStart > reqObj.pageEnd) {
          return {
              "status": 400,
              "message": gs.getMessage("stFrom can not be greater than last")
          };
      }
      if ((reqObj.startDate && !reqObj.endDate) || (reqObj.endDate && !reqObj.startDate))
          return {
              "status": 400,
              "message": gs.getMessage("Please provide start_date and end_date")
          };
      if (reqObj.startDate && reqObj.endDate && reqObj.startDate > reqObj.endDate) {
          return {
              "status": 400,
              "message": gs.getMessage("start_date can not be ahead of end_date")
          };
      }
      /* metaContextGr: GlideRecord of Activity Context table
       * actualContextGr: GlideRecord of a table mentioned in Activity Context table, ex: GlideRecord of account table for the contextInstanceId
       */
      var metaContextGr = this.activityContextDao.activityUtils.getGlideRecord(ActivityConstants.TABLE_ACTIVITY_CONTEXT, {
          "sys_id": reqObj.contextId,
  		"module.active": true
      });
      if (!metaContextGr || !metaContextGr.isValidRecord()) {
          return {
              "status": 400,
              "message": gs.getMessage("Provided context is not configured in the system")
          };
      }
      var actualContextGr = this.activityContextDao.activityUtils.getGlideRecord(metaContextGr.context_table, {
          "sys_id": reqObj.contextInstanceId
      }, null, true);
      if (!actualContextGr || !actualContextGr.isValidRecord()) {
          return {
              "status": 400,
              "message": gs.getMessage("Make sure a valid context_instance is passed")
          };
      }
      try {
          reqObj.actualContextGr = actualContextGr;
          reqObj.module = metaContextGr.module + "";
          var results = this.activityContextDao.getActivities(reqObj);
          return {
              "status": 200,
              "data": results
          };
      } catch (err) {
          return {
              "status": "500",
              "message": err.message
          };
      }
  },

  getActivityContexts: function(request) {
      if (!request.activityModule)
          return {
              "status": 400,
              "message": gs.getMessage("Make sure a valid activity module is passed")
          };

      try {
          var contexts = this.activityContextDao.getActivityContexts(request);
          return {
              "status": 200,
              "data": contexts
          };
      } catch (exception) {
          return {
              "status": "500",
              "message": exception.message
          };
      }
  },

  type: 'ActivityContextServiceSNC'
};

Sys ID

0559f113735f0010e37d71ef64f6a715

Offical Documentation

Official Docs: