32 lines
1.2 KiB
JavaScript
32 lines
1.2 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const { asyncHandler } = require('../middleware/errorHandler');
|
|
const { verifyParticipantToken } = require('../middleware/auth');
|
|
const lessonController = require('../controllers/lesson.controller');
|
|
|
|
// All lesson routes require participant authentication
|
|
router.use(verifyParticipantToken);
|
|
|
|
// Get lessons for an event
|
|
router.get('/event/:eventId/lessons', asyncHandler(lessonController.getEventLessons));
|
|
|
|
// Get lesson content
|
|
router.get('/:eventLessonId', asyncHandler(lessonController.getLessonContent));
|
|
|
|
// Start a lesson
|
|
router.post('/:eventLessonId/start', asyncHandler(lessonController.startLesson));
|
|
|
|
// Submit an answer
|
|
router.post('/:eventLessonId/answer', asyncHandler(lessonController.submitAnswer));
|
|
|
|
// Complete a lesson
|
|
router.post('/:eventLessonId/complete', asyncHandler(lessonController.completeLesson));
|
|
|
|
// Execute lesson-specific action
|
|
router.post('/:eventLessonId/action/:action', asyncHandler(lessonController.executeLessonAction));
|
|
|
|
// Get interactive component data
|
|
router.get('/:lessonKey/interactive/:stepId', asyncHandler(lessonController.getInteractiveData));
|
|
|
|
module.exports = router;
|