import { Injectable, Logger } from '@nestjs/common';

// 메일 발송 서비스 (플레이스홀더) —
// 현재는 실제 SMTP 전송 대신 백엔드 로그로 대체한다(개발/운영 공통).
// 실 메일러(nodemailer 등) 도입 전까지는 인증/재설정 링크를 로그에서 확인한다.
// ⚠️ 보안: 링크에는 원문 토큰이 포함된다. 실 메일러 도입 시 반드시 이 로그 출력을 제거하고
//          실제 이메일 전송으로 교체할 것(운영 로그에 토큰을 남기지 않기 위함).
@Injectable()
export class MailService {
  private readonly logger = new Logger(MailService.name);

  // 가입 인증 메일 — 실 메일러 전까지 인증 링크(원문 토큰 포함)를 로그로 출력한다(개발/운영 공통).
  sendVerificationEmail(to: string, name: string, verifyUrl: string): void {
    this.logger.log(
      [
        '',
        '──────────────── [메일 발송 - 가입 인증] ────────────────',
        `받는 사람 : ${name} <${to}>`,
        '제목      : [Relay] 이메일 인증을 완료해 주세요',
        '본문      : 아래 링크를 클릭하면 회원가입이 완료됩니다.',
        `인증 링크 : ${verifyUrl}`,
        '──────────────────────────────────────────────────────',
        '',
      ].join('\n'),
    );
  }

  // 비밀번호 재설정 메일 — 실 메일러 전까지 재설정 링크(원문 토큰 포함)를 로그로 출력한다(개발/운영 공통).
  sendPasswordResetEmail(to: string, name: string, resetUrl: string): void {
    this.logger.log(
      [
        '',
        '──────────────── [메일 발송 - 비밀번호 재설정] ────────────────',
        `받는 사람 : ${name} <${to}>`,
        '제목      : [Relay] 비밀번호 재설정 안내',
        '본문      : 아래 링크를 클릭해 새 비밀번호를 설정해 주세요. (1시간 유효)',
        `재설정 링크 : ${resetUrl}`,
        '안내      : 본인이 요청하지 않았다면 이 메일을 무시하세요.',
        '────────────────────────────────────────────────────────────',
        '',
      ].join('\n'),
    );
  }
}
