import { IDriverTeamPresenter, DriverTeamResultDTO, DriverTeamViewModel } from '@core/racing/application/presenters/IDriverTeamPresenter'; export class DriverTeamPresenter implements IDriverTeamPresenter { private result: DriverTeamViewModel | null = null; reset() { this.result = null; } present(dto: DriverTeamResultDTO) { const isOwner = dto.team.ownerId === dto.driverId; const canManage = isOwner || dto.membership.role === 'owner' || dto.membership.role === 'manager'; this.result = { team: { id: dto.team.id, name: dto.team.name, tag: dto.team.tag, description: dto.team.description || '', ownerId: dto.team.ownerId, leagues: dto.team.leagues || [], }, membership: { role: dto.membership.role as 'owner' | 'manager' | 'member', joinedAt: dto.membership.joinedAt.toISOString(), isActive: dto.membership.status === 'active', }, isOwner, canManage, }; } getViewModel(): DriverTeamViewModel | null { return this.result; } get viewModel(): DriverTeamViewModel { if (!this.result) throw new Error('Presenter not presented'); return this.result; } }