import type { LeagueJoinRequestDTO } from '@/lib/types/generated/LeagueJoinRequestDTO'; /** * League join request view model * Transform from DTO to ViewModel with UI fields */ export class LeagueJoinRequestViewModel { id: string; leagueId: string; driverId: string; requestedAt: string; private isAdmin: boolean; constructor(dto: LeagueJoinRequestDTO, currentUserId: string, isAdmin: boolean) { this.id = dto.id; this.leagueId = dto.leagueId; this.driverId = dto.driverId; this.requestedAt = dto.requestedAt; this.isAdmin = isAdmin; } /** UI-specific: Formatted request date */ get formattedRequestedAt(): string { return new Date(this.requestedAt).toLocaleString(); } /** UI-specific: Whether the request can be approved by current user */ get canApprove(): boolean { return this.isAdmin; } /** UI-specific: Whether the request can be rejected by current user */ get canReject(): boolean { return this.isAdmin; } }