import type { SponsorDashboardDTO } from '@/lib/types/generated/SponsorDashboardDTO'; import type { SponsorDashboardViewData } from '@/lib/view-data/SponsorDashboardViewData'; /** * Sponsor Dashboard ViewData Builder * * Transforms SponsorDashboardDTO into ViewData for templates. * Deterministic and side-effect free. */ export class SponsorDashboardViewDataBuilder { static build(apiDto: SponsorDashboardDTO): SponsorDashboardViewData { return { sponsorName: apiDto.sponsorName, totalImpressions: apiDto.metrics.impressions.toString(), totalInvestment: `$${apiDto.investment.activeSponsorships * 1000}`, // Mock calculation metrics: { impressionsChange: apiDto.metrics.impressions > 1000 ? 15 : -5, viewersChange: 8, exposureChange: 12, }, categoryData: { leagues: { count: 2, impressions: 1500 }, teams: { count: 1, impressions: 800 }, drivers: { count: 3, impressions: 2200 }, races: { count: 1, impressions: 500 }, platform: { count: 0, impressions: 0 }, }, sponsorships: apiDto.sponsorships, activeSponsorships: apiDto.investment.activeSponsorships, formattedTotalInvestment: `$${apiDto.investment.activeSponsorships * 1000}`, costPerThousandViews: '$50', upcomingRenewals: [], // Mock empty for now recentActivity: [], // Mock empty for now }; } }