Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Tier

Overview

The Tier class manages individual membership tier instances with comprehensive eligibility rules, payment configurations, and approval workflows. It serves as the core tier management system with complex business logic for member eligibility validation and lifecycle management.

General Purpose:

  • Individual membership tier instance management with unique tier IDs
  • Complex eligibility rule system with conditional logic and quota management
  • Approval workflows for tier creation, updates, and status changes
  • Instance-based architecture with unique IDs for each tier entity
  • Integration with Setting class for tier type definitions and Member class for tier assignments
  • MongoDB streaming for real-time tier data persistence
  • Tier cloning capability through sourceTierId parameter to copy eligibility rules from existing tiers

Data Structure

State Schema

interface TierState {
  private: {
    tier: Tier
  }
  public: object
}

Enums and Types

enum TierStatus {
  ACTIVE = 'active',
  INACTIVE = 'inactive',
  PENDING = 'pending',
  EXPIRED = 'expired'
}

enum UpdatableTierStatus {
  ACTIVE = 'active',
  INACTIVE = 'inactive',
  PENDING = 'pending'
}

enum TierEvents {
  TIER_CREATE = 'tier_create',
  TIER_UPDATE = 'tier_update',
  TIER_STATUS_UPDATE = 'tier_status_update',
  ELIGIBILITY_RULE_ADD = 'eligibility_rule_add',
  ELIGIBILITY_RULE_UPDATE = 'eligibility_rule_update',
  ELIGIBILITY_RULE_DEACTIVATE = 'eligibility_rule_deactivate'
}

enum EligibilityRuleStatus {
  ACTIVE = 'active',
  INACTIVE = 'inactive'
}

Additional Structures

interface Tier {
  id: string
  name: string
  description?: string
  tierType: {
    id: string
    group: TierGroup
  }
  fee: number
  startDate: Date
  endDate: Date
  status: TierStatus
  eligibilityRules: EligibilityRule[]
  createdBy: StateManagerActor
  createdAt: Date
  updatedAt: Date
}

interface EligibilityRule {
  id: string
  name: string
  paymentTypes: TierPaymentType[]
  paymentPeriod: string
  quota?: number
  conditions: EligibilityRuleCondition[]
  status: EligibilityRuleStatus
}

interface EligibilityRuleCondition {
  key: string
  logicalOperator: EligibilityOperator
  value: string | number | boolean | unknown[]
}

Core Functionality

Main Feature Groups

  • Tier Lifecycle Management: Complete tier creation, modification, and status management with workflow integration
  • Eligibility Rule System: Complex conditional logic system for member eligibility with quota management and payment configurations
  • Tier Cloning: Ability to create new tiers based on existing ones by copying active eligibility rules using the sourceTierId parameter
  • Payment Configuration: Integration with Setting class for tier type definitions and payment method configurations
  • Approval Workflows: Comprehensive approval system for tier operations with automated status transitions
  • MongoDB Streaming: Real-time data streaming to MongoDB for external system integration and tier data querying
  • Static Utility Services: Tier group and payment type enumeration services for system configuration

Workflow Integration

The Tier class extends WorkflowCompatibleStateManager and integrates with the workflow system:

  • Status Transitions: Workflow rules manage tier status changes through active, inactive, waiting, and expired states
  • Events: Tier operations and eligibility rule changes trigger workflow processing for automated approvals
  • Approval Integration: Tier creation, updates, and rule modifications require approval through ApprovalManager
  • Business Rules: Configurable workflow rules control tier lifecycle, eligibility validation, and operational constraints

API Methods

Tier Management

  • updateTier (WRITE) - Update an existing tier

    • Modify tier details including name, description, fee, dates, and eligibility rules
    • Validates business rules and date constraints for tier updates
  • getTier (READ) - Get tier details

    • Retrieve complete tier information including eligibility rules and payment configurations
  • updateStatus (WRITE) - Update tier status

    • Change tier status between ACTIVE, INACTIVE, and PENDING states
    • Includes workflow validation and business rule enforcement
  • streamTier (WRITE) - Manually stream tier data to MongoDB

    • Force synchronization of tier data to MongoDB for external system access

Eligibility Rule Management

  • addEligibilityRule (WRITE) - Add new eligibility rule

    • Create complex eligibility rules with conditional logic and payment configurations
    • Supports quota management and multi-condition validation
  • updateEligibilityRule (WRITE) - Update existing eligibility rule

    • Modify eligibility rule parameters with validation and approval workflows
  • deactivateEligibilityRule (WRITE) - Deactivate eligibility rule

    • Set eligibility rule status to INACTIVE while maintaining audit trail

Static Utility Methods

  • listTiers (STATIC) - List tiers with filtering and pagination

    • Query tiers from MongoDB with filtering by status, tier type, and search criteria
    • Supports pagination and full-text search across tier names and descriptions
  • getTierGroups (STATIC) - Get available tier groups

    • Retrieve list of tier group types from Setting class configuration
  • getPaymentTypes (STATIC) - Get available payment types

    • Retrieve list of supported payment types from Setting class configuration
  • getEligibilityRuleDefinitions (STATIC) - Get eligibility rule field definitions

    • Returns available field groups and field definitions for building eligibility rules dynamically
    • Includes field types, operators, and resolved values for Member and Company entities
    • Used for building dynamic eligibility rule forms in UI applications

Approval Operations

  • approve (QUEUED_WRITE) - Approve tier creation or update
    • Process approval workflows for tier operations and eligibility rule changes

Initialization

  • INIT (WRITE) - Create a new tier instance
    • Creates a new tier with specified configuration and eligibility rules
    • Supports tier cloning via sourceTierId parameter to copy active eligibility rules
    • Validates tier type from Setting class and checks for date range overlaps

Utilities

The Tier class provides utility functions for internal class-to-class communication:

  • getTierDetails(tierId: string) - Fetch complete tier information via RDK method call
    • Used by other classes to retrieve tier data without direct state access
    • Used internally during tier creation when sourceTierId is provided to copy eligibility rules
    • Performs RDK methodCall to Tier.getTier with proper error handling
    • Returns enriched Tier object with eligibility rule conditions
    • Authorization: Tier class identity is allowed for internal communication

Tier Cloning Process

When creating a new tier with the sourceTierId parameter:

  1. The source tier is fetched using getTierDetails(sourceTierId)
  2. All active eligibility rules from the source tier are extracted
  3. New IDs are generated for each copied eligibility rule
  4. The eligibility rules are assigned to the new tier instance
  5. Inactive rules from the source tier are excluded from the copy

This feature enables rapid tier creation by reusing existing eligibility rule configurations, ensuring consistency across similar tier types while allowing customization of tier-specific properties (name, description, fee, dates, etc.).

Key Features

  1. Architecture Pattern: Instance-based class using unique tier IDs; extends WorkflowCompatibleStateManager
  2. Integration Points: Calls Setting.getTierType() for tier type validation; used by Member class for tier assignment logic
  3. Workflow Support: Implements workflow rules for tier status transitions (PENDING → ACTIVE → INACTIVE → EXPIRED)
  4. Authorization: Program management users only; all operations require specific permissions via RoleManager
  5. Data Management: Single Tier object in private state; automatic MongoDB streaming via tier.streaming utility
  6. External Integrations: MongoDB collection for external queries; no direct third-party API integrations
  7. State Tracking: createdBy/createdAt/updatedAt fields; eligibility rule modification history
  8. Tier Cloning: Supports tier creation from existing tiers via sourceTierId, copying only active eligibility rules with new IDs

Class Relations

The following diagram illustrates how Tier integrates with other system components:

Tier Relations