import type { ITeamDetailsPresenter, TeamDetailsViewModel, TeamDetailsResultDTO, } from '@gridpilot/racing/application/presenters/ITeamDetailsPresenter'; export class TeamDetailsPresenter implements ITeamDetailsPresenter { private viewModel: TeamDetailsViewModel | null = null; reset(): void { this.viewModel = null; } present(input: TeamDetailsResultDTO): void { const { team, membership } = input; const canManage = membership?.role === 'owner' || membership?.role === 'manager'; const viewModel: TeamDetailsViewModel = { team: { id: team.id, name: team.name, tag: team.tag, description: team.description, ownerId: team.ownerId, leagues: team.leagues, createdAt: team.createdAt.toISOString(), }, membership: membership ? { role: membership.role === 'driver' ? 'member' : membership.role, joinedAt: membership.joinedAt.toISOString(), isActive: membership.status === 'active', } : null, canManage, }; this.viewModel = viewModel; } getViewModel(): TeamDetailsViewModel | null { return this.viewModel; } }