import { DriverRegistrationStatusDto } from '../dtos';

export class DriverRegistrationStatusViewModel implements DriverRegistrationStatusDto {
  isRegistered: boolean;
  raceId: string;
  driverId: string;

  constructor(dto: DriverRegistrationStatusDto) {
    Object.assign(this, dto);
  }

  /** UI-specific: Status message */
  get statusMessage(): string {
    return this.isRegistered ? 'Registered for this race' : 'Not registered';
  }

  /** UI-specific: Status color */
  get statusColor(): string {
    return this.isRegistered ? 'green' : 'red';
  }

  /** UI-specific: Badge variant */
  get statusBadgeVariant(): string {
    return this.isRegistered ? 'success' : 'warning';
  }

  /** UI-specific: Registration button text */
  get registrationButtonText(): string {
    return this.isRegistered ? 'Withdraw' : 'Register';
  }

  /** UI-specific: Whether can register (assuming always can if not registered) */
  get canRegister(): boolean {
    return !this.isRegistered;
  }
}