import type { ViewDataBuilder } from '@/lib/contracts/builders/ViewDataBuilder'; import type { LeagueScheduleDTO } from '@/lib/types/generated/LeagueScheduleDTO'; import type { LeagueScheduleViewData } from '@/lib/view-data/LeagueScheduleViewData'; export class LeagueScheduleViewDataBuilder { public static build(apiDto: LeagueScheduleDTO, currentDriverId?: string, isAdmin: boolean = false): LeagueScheduleViewData { const now = new Date(); return { leagueId: apiDto.leagueId || '', races: apiDto.races.map((race) => { const scheduledAt = new Date(race.date); const isPast = scheduledAt.getTime() <= now.getTime(); const isUpcoming = !isPast; return { id: race.id, name: race.name, scheduledAt: race.date, track: race.track || '', car: race.car || '', sessionType: race.sessionType || 'race', isPast, isUpcoming, status: (race.status || (isPast ? 'completed' : 'scheduled')) as 'scheduled' | 'completed', // Registration info (would come from API in real implementation) isUserRegistered: false, canRegister: isUpcoming, // Admin info canEdit: isAdmin, canReschedule: isAdmin, }; }), currentDriverId, isAdmin, }; } } LeagueScheduleViewDataBuilder satisfies ViewDataBuilder;