forked from UKSOURCE/cms.hailearning.edu.vn
77 lines
2.1 KiB
JavaScript
77 lines
2.1 KiB
JavaScript
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');
|
|
}
|
|
};
|