forked from UKSOURCE/cms.hailearning.edu.vn
first commit
This commit is contained in:
79
controllers/departmentController.js
Normal file
79
controllers/departmentController.js
Normal file
@@ -0,0 +1,79 @@
|
||||
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');
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user