Name

sn_appclient.AppManagerFiltersUtil

Description

No description available

Script

var AppManagerFiltersUtil = Class.create();
AppManagerFiltersUtil.prototype = {
  initialize: function() {},
  getFilters: function() {
      var result = {
          filters: []
      };
      var filterList = [{
              name: gs.getMessage('Listings'),
              value: 'listings',
              data: [{
                      label: gs.getMessage('Applications'),
                      value: 'applications',
                  },
                  {
                      label: gs.getMessage('Plugins'),
                      value: 'plugins',
                  },
                  {
                      label: gs.getMessage('Free Trials'),
                      value: 'free_to_try',
                  },
                  {
                      label: gs.getMessage('Products'),
                      value: 'products',
                  },
              ],
          },
          {
              name: gs.getMessage('Offered By'),
              value: 'offeredBy',
              data: [{
                      label: gs.getMessage('Partners'),
                      value: 'partners',
                  },
                  {
                      label: gs.getMessage('ServiceNow'),
                      value: 'servicenow',
                  },
              ],
          },
      ];

      var products = {};
      var options = [];

      this.getLOBs(products, options);
      this.getProductFamily(products, options);

      var productFamilyFacet = {
          name: gs.getMessage('Product Family'),
          value: 'productFamily',
          data: options,
      };
      result.filters = filterList;
      result.filters.push(productFamilyFacet);
      try {
          var adoptionBlueprintFacet = this.getAdoptionBlueprint();
          result.filters.push(adoptionBlueprintFacet);
      } catch (error) {
          gs.debug("error while fetching adoption blueprint");
          return result;
      }
      return result;
  },
  getLOBs: function(products, options) {
      var lobCategories = new global.PluginsData().getLOBCategories();
      for (var i = 0; i < lobCategories.length; i++) {
          var option = {
              label: lobCategories[i].lob_name,
              value: lobCategories[i].lob_name
          };
          if (!(lobCategories[i].lob_name in products)) {
              options.push(option);
              products[lobCategories[i].lob_name] = lobCategories[i].lob_name;
          }
      }
  },
  getProductFamily: function(products, options) {
      var gr = new GlideRecord('sn_appclient_product');
      gr.query();

      while (gr.next()) {
          var productFamily = gr.getValue('family');
          if (!(productFamily in products)) {
              var productOption = {
                  label: productFamily,
                  value: productFamily
              };
              options.push(productOption);
              products[productFamily] = productFamily;
          }
      }
  },
  getAdoptionBlueprint: function() {
      var options = [];
      var gr = new GlideRecord('sn_admin_center_business_objective');
      gr.query();
      while (gr.next()) {
          var adoptionBlueprintName = gr.getValue('name');
          var adoptionBlueprintSysId = gr.getValue('sys_id');
          var adoptionBlueprintOption = {
              label: adoptionBlueprintName,
              value: adoptionBlueprintSysId
          };
          options.push(adoptionBlueprintOption);
      }
      var adoptionBlueprintFacet = {
          name: gs.getMessage('Adoption Blueprint'),
          value: 'adoptionBlueprint',
          data: options,
      };
      return adoptionBlueprintFacet;
  },
  getFilteredIdsWithAdoptionBluePrint: function(adoptionBluePrintQuery) {
      var appNames = [];
      var solutionsGr = new GlideRecord('sn_admin_center_solution');
      solutionsGr.addEncodedQuery(adoptionBluePrintQuery);
      solutionsGr.query();
      while (solutionsGr.next()) {
          var appName = this.getApplicationName(this.getApplicationGlideRecord(solutionsGr.application));
          if (appName != null)
              appNames.push(appName);
      }
      return appNames;
  },
  getApplicationName: function(application) {
      return application.application_type.toString() === 'application' ? application.name : null;
  },
  getPluginId: function(application) {
      return application.application_type.toString() === 'plugin' ? application.plugin_id : null;
  },
  getApplicationGlideRecord: function(applicationId) {
      if (!applicationId)
          return null;

      var applicationGr = new GlideRecord('sn_admin_center_application');
      if (!applicationGr.get(applicationId))
          return null;

      return applicationGr;
  },
  getFilteredPluginIdsWithAdoptionBluePrint: function(adoptionBluePrintQuery) {
      var pluginIDs = [];
      var solutionsGr = new GlideRecord('sn_admin_center_solution');
      solutionsGr.addEncodedQuery(adoptionBluePrintQuery);
      solutionsGr.query();
      while (solutionsGr.next()) {
          var pluginID = this.getPluginId(this.getApplicationGlideRecord(solutionsGr.application));
          if (pluginID != null)
              pluginIDs.push(pluginID);
      }
      return pluginIDs;
  },
  type: 'AppManagerFiltersUtil'
};

Sys ID

136e8d7a8767d5105045b9d8dabb3519

Offical Documentation

Official Docs: