import { Router } from 'express';
import protectAdmin from '../middlewares/protectAdmin';
import protectUser from '../middlewares/protectUser';
import upload from '../middlewares/upload';
import {
  createStatement, getAllStatements, getStatement, updateStatement, deleteStatement,
  createTest, getAllTests, getTest, updateTest, deleteTest, getTestResults, getUserResult,
  getActiveTests, attemptTest, submitTest, getMyResults,
} from '../controllers/psychometricController';
import { importStatements } from '../controllers/psychometricImportController';

const router = Router();

// ─── User: static routes first ───────────────────────────────────────────────
router.get('/tests/active', protectUser, getActiveTests);
router.get('/my-results', protectUser, getMyResults);

// ─── Admin: Statement CRUD ───────────────────────────────────────────────────
router.get('/statements', protectAdmin, getAllStatements);
router.post('/statements', protectAdmin, createStatement);
router.post('/statements/import', protectAdmin, upload.single('file'), importStatements);
router.get('/statements/:id', protectAdmin, getStatement);
router.put('/statements/:id', protectAdmin, updateStatement);
router.delete('/statements/:id', protectAdmin, deleteStatement);

// ─── Admin: Test CRUD ────────────────────────────────────────────────────────
router.get('/tests', protectAdmin, getAllTests);
router.post('/tests', protectAdmin, createTest);
router.get('/tests/:id', protectAdmin, getTest);
router.put('/tests/:id', protectAdmin, updateTest);
router.delete('/tests/:id', protectAdmin, deleteTest);
router.get('/tests/:id/results', protectAdmin, getTestResults);
router.get('/tests/:testId/results/:userId', protectAdmin, getUserResult);

// ─── User: Attempt + Submit ──────────────────────────────────────────────────
router.get('/tests/:id/attempt', protectUser, attemptTest);
router.post('/tests/:id/submit', protectUser, submitTest);

export default router;
