123df671f5
Reviewed-on: #5 Co-authored-by: David Gwilliam <dhgwilliam@gmail.com> Co-committed-by: David Gwilliam <dhgwilliam@gmail.com>
44 lines
1.9 KiB
Markdown
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"
|