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

export class WalletTransactionViewModel implements WalletTransactionDto {
  id: string;
  type: 'deposit' | 'withdrawal';
  amount: number;
  description?: string;
  createdAt: string;

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

  /** UI-specific: Formatted amount with sign */
  get formattedAmount(): string {
    const sign = this.type === 'deposit' ? '+' : '-';
    return `${sign}$${this.amount.toFixed(2)}`;
  }

  /** UI-specific: Amount color */
  get amountColor(): string {
    return this.type === 'deposit' ? 'green' : 'red';
  }

  /** UI-specific: Type display */
  get typeDisplay(): string {
    return this.type.charAt(0).toUpperCase() + this.type.slice(1);
  }

  /** UI-specific: Formatted created date */
  get formattedCreatedAt(): string {
    return new Date(this.createdAt).toLocaleString();
  }
}