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

/**
 * 기업회원 지급 배치 Entity
 * 기업머니에서 기업회원에게 "지급/지급회수"
 */
export class MoneyGrantEntity {
  @Expose()
  mngId!: number;

  @Expose()
  agcId!: number;

  @Expose()
  admId!: number | null;

  @Expose()
  mngActorType!: string | null;

  @Expose()
  mngActorMemId!: number | null;

  @Expose()
  mngType!: string;

  @Expose()
  mngTargetType!: string;

  @Expose()
  mngTitle!: string;

  @Expose()
  mngReason!: string | null;

  @Expose()
  mngAmount!: number;

  @Expose()
  mngMemberCount!: number;

  @Expose()
  mngTotalAmount!: number;

  @Expose()
  mngHasExpiry!: number;

  @Expose()
  mngExpiryDays!: number | null;

  @Expose()
  mngCreatedAt!: string;

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

  @Expose()
  admName?: string;

  @Expose()
  actorMemLoginId?: string | null;

  @Expose()
  actorMemName?: string | null;
}

/**
 * 지급 대상 회원 Entity
 */
export class MoneyGrantTargetEntity {
  @Expose()
  mgtId!: number;

  @Expose()
  mngId!: number;

  @Expose()
  memId!: number;

  @Expose()
  mgtAmount!: number;

  @Expose()
  mgtCreatedAt!: string;

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

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

  @Expose()
  sagName?: string;

  @Expose()
  sacName?: string;

  @Expose()
  msrRemainingAmount?: number;

  @Expose()
  msrExpiredAt?: string | null;
}
