import { WalletDto, WalletTransactionDto } from '../dtos';
import { WalletTransactionViewModel } from './WalletTransactionViewModel';

export class WalletViewModel implements WalletDto {
  driverId: string;
  balance: number;
  currency: string;
  transactions: WalletTransactionViewModel[];

  constructor(dto: WalletDto & { transactions: WalletTransactionDto[] }) {
    this.driverId = dto.driverId;
    this.balance = dto.balance;
    this.currency = dto.currency;
    this.transactions = dto.transactions.map(t => new WalletTransactionViewModel(t));
  }

  /** UI-specific: Formatted balance */
  get formattedBalance(): string {
    return `${this.currency} ${this.balance.toFixed(2)}`;
  }

  /** UI-specific: Balance color */
  get balanceColor(): string {
    return this.balance >= 0 ? 'green' : 'red';
  }

  /** UI-specific: Recent transactions (last 5) */
  get recentTransactions(): WalletTransactionViewModel[] {
    return this.transactions.slice(0, 5);
  }

  /** UI-specific: Total transactions count */
  get totalTransactions(): number {
    return this.transactions.length;
  }
}