const Department = require('../models/department'); const Degree = require('../models/degree'); // GET /admin/department exports.index = async (req, res) => { try { const departments = await Department.find(); res.render('admin/department/index', { departments, user: req.session.user, layout: 'layouts/admin', title: 'Quản lý Khoa/Bộ môn' }); } catch (err) { console.error('departmentController.index error:', err); req.flash('error', 'Đã xảy ra lỗi khi tải danh sách khoa/bộ môn'); res.redirect('/admin/dashboard'); } }; // POST /admin/department/create exports.create = async (req, res) => { try { const { name } = req.body; const slug = name.toLowerCase().trim().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, ''); const existing = await Department.findOne({ slug }); if (existing) { req.flash('error', 'Department already exists'); return res.redirect('back'); } await Department.create({ name, slug }); req.flash('success', 'Department created'); res.redirect('/admin/department'); } catch (err) { console.error('departmentController.create error:', err); req.flash('error', 'Đã xảy ra lỗi khi tạo khoa/bộ môn'); res.redirect('back'); } }; // POST /admin/department/:id/edit exports.update = async (req, res) => { try { const { id } = req.params; const { name } = req.body; const slug = name.toLowerCase().trim().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, ''); await Department.findByIdAndUpdate(id, { name, slug }); req.flash('success', 'Department updated'); res.redirect('/admin/department'); } catch (err) { console.error('departmentController.update error:', err); req.flash('error', 'Đã xảy ra lỗi khi cập nhật khoa/bộ môn'); res.redirect('back'); } }; // POST /admin/department/:id/delete exports.destroy = async (req, res) => { try { const { id } = req.params; const count = await Degree.countDocuments({ department: id }); if (count > 0) { req.flash('error', 'Cannot delete: Department is referenced by existing degrees'); return res.redirect('back'); } await Department.findByIdAndDelete(id); req.flash('success', 'Department deleted'); res.redirect('/admin/department'); } catch (err) { console.error('departmentController.destroy error:', err); req.flash('error', 'Đã xảy ra lỗi khi xóa khoa/bộ môn'); res.redirect('back'); } };