import { Expose, Transform } from 'class-transformer';

/**
 * 유저 머니 이력 Entity
 * 사용자가 보는 단순 이력 (1건 = 1이력)
 */
export class MoneyWalletEntity {
  @Expose()
  mwlId!: number;

  @Expose()
  memId!: number;

  @Expose()
  mwlType!: string;

  @Expose()
  mwlAmount!: number;

  @Expose()
  mwlBalance!: number;

  @Expose()
  mwlDescription!: string | null;

  @Expose()
  mwlCreatedAt!: string;

  // 조인된 데이터
  @Expose()
  memLoginId?: string;

  @Expose()
  @Transform(({ value }) => value || '')
  memName?: string;

  @Expose()
  memType?: string;

  @Expose()
  sagName?: string;

  @Expose()
  sacName?: string;

  @Expose()
  agcCorporateName?: string;

  // 결제 정보 (충전건)
  @Expose()
  mpyOrderNumber?: string;

  @Expose()
  mpyTid?: string | null;

  @Expose()
  mpyApprovedAt?: string | null;

  // source 정보
  @Expose()
  msrExpiredAt?: string | null;

  // grant 정보 (지급/회수 사유)
  @Expose()
  mwlReason?: string | null;
}

/**
 * 머니 이력 요약 정보 Entity
 */
export class MoneyWalletSummaryEntity {
  @Expose()
  totalEarn!: number;

  @Expose()
  totalCharge!: number;

  @Expose()
  totalGrant!: number;

  @Expose()
  totalExpire!: number;

  @Expose()
  totalUse!: number;

  @Expose()
  totalGrantRecovery!: number;

  @Expose()
  totalEarnRecovery!: number;

  @Expose()
  currentBalance!: number;
}
