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