const Level = require('../models/level'); const Degree = require('../models/degree'); // GET /admin/level exports.index = async (req, res) => { try { const levels = await Level.find(); res.render('admin/level/index', { levels, user: req.session.user, layout: 'layouts/admin', title: 'Quản lý Cấp độ' }); } catch (err) { console.error('levelController.index error:', err); req.flash('error', 'Đã xảy ra lỗi khi tải danh sách cấp độ'); res.redirect('/admin/dashboard'); } }; // POST /admin/level/create exports.create = async (req, res) => { try { const { type } = req.body; if (!type) { req.flash('error', 'Type is required'); return res.redirect('back'); } await Level.create({ type }); req.flash('success', 'Level created'); res.redirect('/admin/level'); } catch (err) { console.error('levelController.create error:', err); req.flash('error', 'Đã xảy ra lỗi khi tạo cấp độ'); res.redirect('back'); } }; // POST /admin/level/:id/edit exports.update = async (req, res) => { try { const { id } = req.params; const { type } = req.body; await Level.findByIdAndUpdate(id, { type }); req.flash('success', 'Level updated'); res.redirect('/admin/level'); } catch (err) { console.error('levelController.update error:', err); req.flash('error', 'Đã xảy ra lỗi khi cập nhật cấp độ'); res.redirect('back'); } }; // POST /admin/level/:id/delete exports.destroy = async (req, res) => { try { const { id } = req.params; const count = await Degree.countDocuments({ level: id }); if (count > 0) { req.flash('error', 'Cannot delete: Level is referenced by existing degrees'); return res.redirect('back'); } await Level.findByIdAndDelete(id); req.flash('success', 'Level deleted'); res.redirect('/admin/level'); } catch (err) { console.error('levelController.destroy error:', err); req.flash('error', 'Đã xảy ra lỗi khi xóa cấp độ'); res.redirect('back'); } };