Name

sn_entitlement.dao_UserAllocationDataDao

Description

No description available

Script

var dao_UserAllocationDataDao = Class.create();
dao_UserAllocationDataDao.prototype = {
  initialize: function() {
      this._dbUtil = new sn_entitlement.DBUtil();
  },

  /**
   * Retrieves the user_allocation_data.sys_id values for all records that tie
   * back to the provided subscriptionDetailId
   *
   * @param {guid} subscriptionDetailId The subscription_detail.sys_id to filter by
   * @returns {array} An array of user_allocation_data.sys_id values
   */
  getUserAllocationDataIdsBySubscriptionDetailId: function(subscriptionDetailId) {
      const gr = new GlideRecord('user_allocation_data_m2m_subscription_detail');
      gr.addQuery('subscription_detail', subscriptionDetailId);
      gr.query();

      let ids = [];
      while (gr.next())
          ids.push(String(gr.getValue('user_allocation_data')));
      return ids;
  },

  /**
   * Retrieves an EntityAllocationData object for the user_allocation_data.sys_id provided
   *
   * @param {guid} userAllocationDataId The user_allocation_data.sys_id to retrieve data for
   * @returns {object} A EntityAllocationData object or null
   */
  getEntityAllocationDataObjectByUserAllocationDataId: function(userAllocationDataId) {
      const gr = new GlideRecord('user_allocation_data');
      return gr.get(userAllocationDataId) ?
          this._mapUserAllocationDataRecordToObject(gr) :
          null;
  },

  /**
   * Maps a user_allocation_data GlideRecord to a EntityAllocationData object
   *
   * @param {object} A GlideRecord user_allocation_data row
   * @returns {object} A EntityAllocationData record
   */
  _mapUserAllocationDataRecordToObject: function(record) {
      const id = record.getUniqueValue();

      return new sn_entitlement.EntityAllocationData(
          'sys_user.sys_id',
          record.getValue('user'),
          record.getValue('qualifying_data'),
          this._dbUtil.convertGlideListToArray(record.getValue('assigned_roles')),
          this._dbUtil.convertGlideListToArray(record.getValue('subscribeable_roles')),
          this._dbUtil.convertGlideListToArray(record.getValue('subscribed_roles')),
          this._dbUtil.convertGlideListToArray(record.getValue('unsubscribed_roles')),
          this._getSubscriptionIdsByUserAllocationDataIdAndIsAllocated(id, true),
          this._getSubscriptionIdsByUserAllocationDataIdAndIsAllocated(id, false),
          record.getValue('is_fully_allocated').toLowerCase() == 'true',
      );
  },

  /**
   * Retrieves the subscriptionIds associated with an unallocated user data record filtered by the is_allocated flag
   *
   * @param {guid} userAllocationDataId The user_allocation_data.sys_id to filter by
   * @param {bool} isAllocated The is_allocated value to filter by
   * @returns {array} An array of subscription_entitlement.sys_id values
   */
  _getSubscriptionIdsByUserAllocationDataIdAndIsAllocated: function(userAllocationDataId, isAllocated) {
      const gr = new GlideRecord('user_allocation_data_m2m_subscription_detail');
      gr.addQuery('user_allocation_data', userAllocationDataId);
      gr.addQuery('is_allocated', isAllocated);
      gr.query();

      let ids = [];
      while (gr.next())
          ids.push(this._getSubIdFromGlideRecord(gr));

      return ids;
  },

  _getSubIdFromGlideRecord: function(gr) {
      const subscription = gr.subscription_detail.subscription ? String(gr.subscription_detail.subscription) : "";
      return subscription.length > 0 ? subscription : String(gr.subscription_detail.license);
  },

  type: 'dao_UserAllocationDataDao'
};

Sys ID

f52bfa6453302110d185ddeeff7b12d5

Offical Documentation

Official Docs: