import type { GetDriverProfileOutputDTO } from '@/lib/types/generated/GetDriverProfileOutputDTO'; import type { DriverProfileViewData } from '@/lib/types/view-data/DriverProfileViewData'; export class DriverProfileViewDataBuilder { static build(dto: GetDriverProfileOutputDTO): DriverProfileViewData { return { currentDriver: dto.currentDriver ? { id: dto.currentDriver.id, name: dto.currentDriver.name, country: dto.currentDriver.country, avatarUrl: dto.currentDriver.avatarUrl || '', iracingId: dto.currentDriver.iracingId || null, joinedAt: dto.currentDriver.joinedAt, rating: dto.currentDriver.rating || null, globalRank: dto.currentDriver.globalRank || null, consistency: dto.currentDriver.consistency || null, bio: dto.currentDriver.bio || null, totalDrivers: dto.currentDriver.totalDrivers || null, } : null, stats: dto.stats ? { totalRaces: dto.stats.totalRaces, wins: dto.stats.wins, podiums: dto.stats.podiums, dnfs: dto.stats.dnfs, avgFinish: dto.stats.avgFinish || null, bestFinish: dto.stats.bestFinish || null, worstFinish: dto.stats.worstFinish || null, finishRate: dto.stats.finishRate || null, winRate: dto.stats.winRate || null, podiumRate: dto.stats.podiumRate || null, percentile: dto.stats.percentile || null, rating: dto.stats.rating || null, consistency: dto.stats.consistency || null, overallRank: dto.stats.overallRank || null, } : null, finishDistribution: dto.finishDistribution ? { totalRaces: dto.finishDistribution.totalRaces, wins: dto.finishDistribution.wins, podiums: dto.finishDistribution.podiums, topTen: dto.finishDistribution.topTen, dnfs: dto.finishDistribution.dnfs, other: dto.finishDistribution.other, } : null, teamMemberships: dto.teamMemberships.map(m => ({ teamId: m.teamId, teamName: m.teamName, teamTag: m.teamTag || null, role: m.role, joinedAt: m.joinedAt, isCurrent: m.isCurrent, })), socialSummary: { friendsCount: dto.socialSummary.friendsCount, friends: dto.socialSummary.friends.map(f => ({ id: f.id, name: f.name, country: f.country, avatarUrl: f.avatarUrl || '', })), }, extendedProfile: dto.extendedProfile ? { socialHandles: dto.extendedProfile.socialHandles.map(h => ({ platform: h.platform, handle: h.handle, url: h.url, })), achievements: dto.extendedProfile.achievements.map(a => ({ id: a.id, title: a.title, description: a.description, icon: a.icon, rarity: a.rarity, earnedAt: a.earnedAt, })), racingStyle: dto.extendedProfile.racingStyle, favoriteTrack: dto.extendedProfile.favoriteTrack, favoriteCar: dto.extendedProfile.favoriteCar, timezone: dto.extendedProfile.timezone, availableHours: dto.extendedProfile.availableHours, lookingForTeam: dto.extendedProfile.lookingForTeam, openToRequests: dto.extendedProfile.openToRequests, } : null, }; } }