const express = require('express'); const router = express.Router(); const userController = require('../controllers/user.controller'); const { verifyToken } = require('../middleware/auth.middleware'); /** * @route GET /api/users/:userId/dashboard * @desc Get user dashboard with stats, recent sessions, and category performance * @access Private (User - own dashboard only) */ router.get('/:userId/dashboard', verifyToken, userController.getUserDashboard); /** * @route GET /api/users/:userId/history * @desc Get user quiz history with pagination, filtering, and sorting * @query page - Page number (default: 1) * @query limit - Items per page (default: 10, max: 50) * @query category - Filter by category ID * @query status - Filter by status (completed, timeout, abandoned) * @query startDate - Filter by start date (ISO 8601) * @query endDate - Filter by end date (ISO 8601) * @query sortBy - Sort by field (date, score) (default: date) * @query sortOrder - Sort order (asc, desc) (default: desc) * @access Private (User - own history only) */ router.get('/:userId/history', verifyToken, userController.getQuizHistory); /** * @route PUT /api/users/:userId * @desc Update user profile * @body username - New username (optional) * @body email - New email (optional) * @body currentPassword - Current password (required if changing password) * @body newPassword - New password (optional) * @body profileImage - Profile image URL (optional) * @access Private (User - own profile only) */ router.put('/:userId', verifyToken, userController.updateUserProfile); module.exports = router;