import { Injectable } from '@nestjs/common';
import { ReferralRepository } from './referral.repository';
import { GetReferralMemberListDto, UpdateReferralBenefitDto } from './referral.dto';

@Injectable()
export class ReferralService {
  constructor(private readonly referralRepository: ReferralRepository) {}

  /**
   * 추천인 혜택 설정 조회
   */
  async getReferralBenefit() {
    return await this.referralRepository.getReferralBenefit();
  }

  /**
   * 추천인 혜택 설정 수정
   */
  async updateReferralBenefit(dto: UpdateReferralBenefitDto) {
    return await this.referralRepository.updateReferralBenefit(dto);
  }

  /**
   * 추천인 회원 목록 조회
   */
  async getReferralMemberList(dto: GetReferralMemberListDto) {
    const list = await this.referralRepository.getReferralMemberList(dto);
    const count = await this.referralRepository.getReferralMemberCount(dto);

    return {
      list: list.map((item) => ({
        referrerMemId: item.referrer.memId,
        referrerMemLoginId: item.referrer.memLoginId,
        referrerMemName: item.referrer.memName,
        referrerMemMyReferralCode: item.referrer.memMyReferralCode,
        refereeMemId: item.referee.memId,
        refereeMemLoginId: item.referee.memLoginId,
        refereeMemName: item.referee.memName,
        refereeMemCreatedAt: item.referee.memCreatedAt,
      })),
      count,
    };
  }
}
