import { ITeamsLeaderboardPresenter, TeamsLeaderboardResultDTO, TeamsLeaderboardViewModel, TeamLeaderboardItemViewModel } from '@core/racing/application/presenters/ITeamsLeaderboardPresenter'; export class TeamsLeaderboardPresenter implements ITeamsLeaderboardPresenter { private result: TeamsLeaderboardViewModel | null = null; reset() { this.result = null; } present(dto: TeamsLeaderboardResultDTO) { this.result = { teams: dto.teams as TeamLeaderboardItemViewModel[], recruitingCount: dto.recruitingCount, groupsBySkillLevel: { beginner: [], intermediate: [], advanced: [], pro: [], }, topTeams: (dto.teams as TeamLeaderboardItemViewModel[]).slice(0, 10), }; } getViewModel(): TeamsLeaderboardViewModel | null { return this.result; } get viewModel(): TeamsLeaderboardViewModel { if (!this.result) throw new Error('Presenter not presented'); return this.result; } }