// Note: No generated DTO available for TeamSummary yet interface TeamSummaryDTO { id: string; name: string; logoUrl?: string; memberCount: number; rating: number; } export class TeamSummaryViewModel { id: string; name: string; logoUrl?: string; memberCount: number; rating: number; private maxMembers = 10; // Assuming max members constructor(dto: TeamSummaryDTO) { this.id = dto.id; this.name = dto.name; if (dto.logoUrl !== undefined) this.logoUrl = dto.logoUrl; this.memberCount = dto.memberCount; this.rating = dto.rating; } /** UI-specific: Whether team is full */ get isFull(): boolean { return this.memberCount >= this.maxMembers; } /** UI-specific: Rating display */ get ratingDisplay(): string { return this.rating.toFixed(0); } /** UI-specific: Member count display */ get memberCountDisplay(): string { return `${this.memberCount}/${this.maxMembers}`; } /** UI-specific: Status indicator */ get statusIndicator(): string { if (this.isFull) return 'Full'; return 'Open'; } /** UI-specific: Status color */ get statusColor(): string { return this.isFull ? 'red' : 'green'; } }