const express = require('express');
const router = express.Router();
const jwt = require('jsonwebtoken');
const clubController = require('../controllers/clubController');
const { authenticateJWT } = require('../middleware/authMiddleware');
const requireFeature = require('../middleware/requireFeature');

// 클럽 선택
router.post('/select-club', authenticateJWT, clubController.selectClub);

// 모든 클럽 조회
router.get('/', clubController.getAllClubs);

// 특정 클럽 조회
router.post('/', authenticateJWT, clubController.getClubById);

// 클럽 정보 업데이트
router.put('/', authenticateJWT, clubController.updateClub);

// 클럽 삭제
router.delete('/', authenticateJWT, clubController.deleteClub);

// 사용자 클럽 목록 조회
router.post('/user', authenticateJWT, clubController.getUserClubs);

// 클럽 회원 통계 조회
router.post('/members/stats', authenticateJWT, clubController.getMemberStats);

// 클럽 회원 목록 조회
router.post('/members', authenticateJWT, clubController.getClubMembers);

// 클럽 회원 추가
router.post('/members/add', authenticateJWT, clubController.addClubMember);

// 클럽 회원 수정
router.post('/members/update', authenticateJWT, clubController.updateClubMember);

// 클럽 회원 삭제
router.post('/members/delete', authenticateJWT, clubController.deleteClubMember);

// 다음 모임 정보 조회
router.post('/meetings/next', authenticateJWT, clubController.getNextMeetings);

// 최근 모임 정보 조회
router.post('/meetings/last', authenticateJWT, clubController.getLastMeeting);

// 최근 정기 모임 목록 조회
router.post('/meetings/recent', authenticateJWT, clubController.getRecentMeetings);

// 점수 통계 조회
router.post('/scores/stats', authenticateJWT, clubController.getScoreStats);

// 상위 회원 목록 조회
router.post('/members/top', authenticateJWT, clubController.getTopMembers);

// 새 클럽 생성
router.post('/create', authenticateJWT, clubController.createClub);

// 클럽 통계 조회
router.post('/statistics', authenticateJWT, requireFeature('statistics'), clubController.getStatistics);

// 클럽 기능 관리
router.put('/features', authenticateJWT, clubController.manageClubFeatures);

module.exports = router;
