/**
 * Driver view model
 * UI representation of a driver
 *
 * Note: No matching generated DTO available yet
 */
export class DriverViewModel {
  id: string;
  name: string;
  avatarUrl: string | null;
  iracingId?: string;
  rating?: number;
  country?: string;
  bio?: string;
  joinedAt?: string;

  constructor(dto: {
    id: string;
    name: string;
    avatarUrl?: string | null;
    iracingId?: string;
    rating?: number;
    country?: string;
    bio?: string;
    joinedAt?: string;
  }) {
    this.id = dto.id;
    this.name = dto.name;
    this.avatarUrl = dto.avatarUrl ?? null;
    if (dto.iracingId !== undefined) this.iracingId = dto.iracingId;
    if (dto.rating !== undefined) this.rating = dto.rating;
    if (dto.country !== undefined) this.country = dto.country;
    if (dto.bio !== undefined) this.bio = dto.bio;
    if (dto.joinedAt !== undefined) this.joinedAt = dto.joinedAt;
  }

  /** UI-specific: Whether driver has an iRacing ID */
  get hasIracingId(): boolean {
    return !!this.iracingId;
  }

  /** UI-specific: Formatted rating */
  get formattedRating(): string {
    return this.rating ? this.rating.toFixed(0) : 'Unrated';
  }
}