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

44 lines
1.9 KiB
Markdown

# 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"