/**
 * 메일 수신 라우트 (Step 2 - 기본 구현)
 */

import express from 'express';
import { MailReceiveBasicController } from '../controllers/mailReceiveBasicController';
import { authenticateToken } from '../middleware/authMiddleware';

const router = express.Router();

// 모든 메일 수신 라우트에 인증 미들웨어 적용
router.use(authenticateToken);
const controller = new MailReceiveBasicController();

// 오늘 수신 메일 수 조회 (통계) - 가장 먼저 정의 (가장 구체적)
router.get('/today-count', (req, res) => controller.getTodayReceivedCount(req, res));

// 첨부파일 다운로드 - 매우 구체적인 경로
router.get('/:accountId/:seqno/attachment/:index', (req, res) => {
  console.log(`📎 첨부파일 라우트 핸들러 진입!`);
  console.log(`   accountId: ${req.params.accountId}`);
  console.log(`   seqno: ${req.params.seqno}`);
  console.log(`   index: ${req.params.index}`);
  controller.downloadAttachment(req, res);
});

// 메일 읽음 표시 - 구체적인 경로
router.post('/:accountId/:seqno/mark-read', (req, res) => controller.markAsRead(req, res));

// 메일 삭제 - 구체적인 경로
router.delete('/:accountId/:seqno', (req, res) => controller.deleteMail(req, res));

// 메일 상세 조회 - /:accountId보다 먼저 정의해야 함
router.get('/:accountId/:seqno', (req, res) => controller.getMailDetail(req, res));

// IMAP 연결 테스트 - /:accountId보다 먼저 정의해야 함
router.post('/:accountId/test-imap', (req, res) => controller.testImapConnection(req, res));

// 메일 목록 조회 - 가장 마지막에 정의 (가장 일반적)
router.get('/:accountId', (req, res) => controller.getMailList(req, res));

export default router;

