Files
euchre_camp/docs/TOURNAMENT_STATUS_FIX.md
david 123df671f5 nextjs-rewrite (#5)
Reviewed-on: #5
Co-authored-by: David Gwilliam <dhgwilliam@gmail.com>
Co-committed-by: David Gwilliam <dhgwilliam@gmail.com>
2026-03-30 02:30:13 +00:00

1.9 KiB

Tournament Status Fix

Problem

Tournaments with past eventDate were incorrectly showing as "planned" because the status field was static and only updated when explicitly changed.

Solution

Implemented dynamic status calculation based on event date that automatically updates when tournaments are fetched.

Changes Made

1. Created src/lib/tournamentUtils.ts

  • Added getTournamentStatus(eventDate: Date | null): string function
  • Returns "completed" if eventDate is in the past
  • Returns "planned" if eventDate is in the future or null
  • Added helper functions isTournamentPast() and isTournamentFuture()

2. Updated src/app/api/tournaments/route.ts

  • Modified GET endpoint to automatically update tournament statuses
  • Fetches all tournaments with participants and teams
  • Calculates status using getTournamentStatus() for each tournament
  • Updates database if calculated status differs from stored status
  • Returns tournaments with updated status

3. Updated src/app/admin/tournaments/page.tsx

  • Added import for getTournamentStatus utility
  • Calculates dynamic status for each tournament before rendering
  • Updates database if status needs to change
  • Displays calculated status in UI

4. Updated src/app/admin/tournaments/[id]/page.tsx

  • Added import for getTournamentStatus utility
  • Calculates and updates tournament status before rendering detail page
  • Ensures consistent status display across all tournament views

Status Logic

  • Past eventDate → "completed" (gray badge: bg-gray-100 text-gray-800)
  • Future eventDate or null → "planned" (yellow badge: bg-yellow-100 text-yellow-800)

Behavior

  • Status is automatically calculated and updated whenever tournaments are fetched
  • No manual intervention required
  • Existing tournaments with past dates are automatically marked as "completed"
  • Future tournaments or tournaments without dates remain "planned"