const express = require('express'); const Course = require('../models/Course'); const auth = require('../middleware/auth'); const router = express.Router(); // Get all courses router.get('/', async (req, res) => { try { const { category, level, featured } = req.query; const query = {}; if (category) query.category = category; if (level) query.level = level; if (featured) query.isFeatured = featured === 'true'; const courses = await Course.find(query) .populate('instructor', 'username profile.fullName') .sort({ createdAt: -1 }); res.json(courses); } catch (err) { res.status(500).json({ message: 'Server error' }); } }); // Get single course router.get('/:id', async (req, res) => { try { const course = await Course.findById(req.params.id) .populate('instructor', 'username profile.fullName profile.bio profile.avatar') .populate('lessons.quiz'); if (!course) return res.status(404).json({ message: 'Course not found' }); res.json(course); } catch (err) { res.status(500).json({ message: 'Server error' }); } }); // Create course (admin/instructor only) router.post('/', auth, async (req, res) => { try { if (req.user.role !== 'admin' && req.user.role !== 'instructor') { return res.status(403).json({ message: 'Not authorized' }); } const course = new Course({ ...req.body, instructor: req.user.id }); await course.save(); res.status(201).json(course); } catch (err) { res.status(500).json({ message: 'Server error' }); } }); module.exports = router;