import { SponsorshipDetailDTO } from '@/lib/types/generated/SponsorshipDetailDTO'; export class SponsorshipDetailViewModel { id: string; leagueId: string; leagueName: string; seasonId: string; seasonName: string; constructor(dto: SponsorshipDetailDTO) { this.id = dto.id; this.leagueId = dto.leagueId; this.leagueName = dto.leagueName; this.seasonId = dto.seasonId; this.seasonName = dto.seasonName; } // Note: The generated DTO is incomplete // These fields will need to be added when the OpenAPI spec is updated tier: 'main' | 'secondary' = 'secondary'; status: string = 'active'; amount: number = 0; currency: string = 'USD'; type: string = 'league'; entityName: string = ''; price: number = 0; impressions: number = 0; /** UI-specific: Formatted amount */ get formattedAmount(): string { return `${this.currency} ${this.amount.toLocaleString()}`; } /** UI-specific: Tier badge variant */ get tierBadgeVariant(): string { return this.tier === 'main' ? 'primary' : 'secondary'; } /** UI-specific: Status color */ get statusColor(): string { switch (this.status) { case 'active': return 'green'; case 'pending': return 'yellow'; case 'expired': return 'red'; default: return 'gray'; } } /** UI-specific: Status display */ get statusDisplay(): string { return this.status.charAt(0).toUpperCase() + this.status.slice(1); } }