import { DriversLeaderboardDTO } from '../dtos/DriversLeaderboardDTO'; import type { GetDriversLeaderboardResult, } from '@core/racing/application/use-cases/GetDriversLeaderboardUseCase'; export class DriversLeaderboardPresenter { private responseModel: DriversLeaderboardDTO | null = null; present(data: GetDriversLeaderboardResult): void { this.responseModel = { drivers: data.items.map(item => ({ id: item.driver.id, name: item.driver.name.toString(), rating: item.rating, skillLevel: item.skillLevel, ...(item.driver.category !== undefined ? { category: item.driver.category } : {}), nationality: item.driver.country.toString(), racesCompleted: item.racesCompleted, wins: item.wins, podiums: item.podiums, isActive: item.isActive, rank: item.rank, ...(item.avatarUrl !== undefined ? { avatarUrl: item.avatarUrl } : {}), })), totalRaces: data.totalRaces, totalWins: data.totalWins, activeCount: data.activeCount, }; } getResponseModel(): DriversLeaderboardDTO { if (!this.responseModel) throw new Error('Presenter not presented'); return this.responseModel; } }