Skip to content

Component Name: membershipBanner

Last Updated: 2025-09-29 Source Code: https://bitbucket.org/i2cinc/i2c.salesforce.metadata/src/STAGING/force-app/main/default/lwc/membershipBanner

API Name: c-membershipBanner Type: Display Component Target: Not specified

Business Purpose

Displays membership status banner on Account record pages. Shows different colored banners and messages based on membership status: Deceased (black), Expired (red), Grace Period (orange), Expiring Soon (<14 days, yellow), Active (green for Corporate Council). Helps admins quickly identify membership issues.

Component Structure

Files: membershipBanner.html, membershipBanner.js (96 lines), membershipBanner.js-meta.xml

JavaScript Controller

Properties (API)

  • @api recordId - Account record ID
  • @api objectApiName - "Account"

Wire Adapters

  • @wire(getRecord) - Loads Account fields: Membership_status__c, Member_Type__c, Membership_End_Date__c, Auto_Renew__c, Is_a_Fellow__c, Deceased__c, IsPersonAccount, Is_Member__c

Computed Properties

  • isDeceased - Returns true if Deceased__c = true
  • isExpired - Returns true if status = "Expired"
  • isExpiredGracePeriod - Returns true if status = "Within Grace period"
  • isDateExpiring - Compares end date to today (unused/broken logic)
  • isAlmostExpired - Returns true if 0-14 days until expiration
  • itIsPersonAccount - Returns true if IsPersonAccount
  • isCorporateCouncilMember - Returns true if Member_Type = "Corporate Council Member"
  • showActiveStatus - Returns true for active Corporate Council members

Usage

<!-- On Account record page -->
<c-membership-banner record-id={recordId} object-api-name="Account"></c-membership-banner>

⚠️ Pre-Go-Live Concerns

HIGH

  • isDateExpiring broken: Lines 58-68 logic always returns true (localeCompare returns number, not boolean)
  • Timezone issues: Lines 60-62 mix local and Chicago timezones incorrectly
  • No unit tests: Zero coverage for date calculations

MEDIUM

  • Hardcoded "Corporate Council Member": Line 12 constant not configurable
  • Hardcoded 14 days: Expiration warning threshold should be configurable (line 77)

LOW

  • isDateExpiring unused: Computed property defined but never used in template

Maintenance Notes

Complexity: Low-Medium Key Notes: - CRITICAL: isDateExpiring has broken logic (localeCompare comparison) - Component displays colored banners based on membership status - Date calculations for "expiring soon" warning (14 days) - Deceased status gets highest priority - Grace period and expired are distinct statuses - Corporate Council members get special "Active" status display - Component used on Account record pages - All date logic uses client-side JavaScript (timezone sensitive)

Browser Compatibility: - Standard browser support - Date calculations may vary by browser timezone settings