feat: implementacion de dashboards por rol, soporte de clases virtuales concurrentes en importador de sheets y cartelera del dia
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const { requireAuth } = require('../middlewares/authMiddleware');
|
||||
|
||||
router.use(requireAuth);
|
||||
|
||||
const handleMySubjectsList = async (req, res) => {
|
||||
try {
|
||||
let commissions = [];
|
||||
try {
|
||||
const resp = await req.apiClient.get('/commissions');
|
||||
if (resp.data && resp.data.commissions) {
|
||||
commissions = resp.data.commissions.map(c => ({
|
||||
...c,
|
||||
full_code: c.full_code || c.code,
|
||||
subject: { name: c.subject_name || c.subject?.name, code: c.subject_code || c.subject?.code }
|
||||
}));
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('My subjects list API notice:', e.message);
|
||||
}
|
||||
|
||||
res.render('my_subjects/list', {
|
||||
title: 'Mis Materias — Edu-Space',
|
||||
commissions,
|
||||
view_mode: 'all',
|
||||
role: req.user?.role || 'admin'
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('Error in my_subjects list:', err.message);
|
||||
res.render('my_subjects/list', {
|
||||
title: 'Mis Materias',
|
||||
commissions: [],
|
||||
view_mode: 'all',
|
||||
role: 'admin'
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const handleMySubjectDetail = async (req, res) => {
|
||||
const id = req.params.id || req.query.id || req.params.commission_id || 1;
|
||||
try {
|
||||
let commission = null;
|
||||
try {
|
||||
const resp = await req.apiClient.get(`/commissions/${id}`);
|
||||
if (resp.data && resp.data.commission) {
|
||||
commission = resp.data.commission;
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('Commission detail API notice:', e.message);
|
||||
}
|
||||
|
||||
if (!commission) {
|
||||
// Fallback: fetch list and find
|
||||
try {
|
||||
const listResp = await req.apiClient.get('/commissions');
|
||||
const list = listResp.data?.commissions || [];
|
||||
const found = list.find(c => String(c.id) === String(id)) || list[0];
|
||||
if (found) {
|
||||
commission = {
|
||||
...found,
|
||||
full_code: found.full_code || found.code,
|
||||
subject: { name: found.subject_name, code: found.subject_code },
|
||||
active: found.active !== undefined ? found.active : true
|
||||
};
|
||||
}
|
||||
} catch (err) {}
|
||||
}
|
||||
|
||||
if (!commission) {
|
||||
commission = {
|
||||
id,
|
||||
code: 'C1',
|
||||
full_code: 'MAT-C1',
|
||||
subject: { name: 'Materia', code: 'MAT' },
|
||||
shift: 'Mañana',
|
||||
semester: '1C',
|
||||
year: 2026,
|
||||
active: true,
|
||||
max_students: 35,
|
||||
current_students: 20
|
||||
};
|
||||
}
|
||||
|
||||
res.render('my_subjects/detail', {
|
||||
title: `${commission.subject?.name || 'Materia'} — ${commission.full_code || commission.code} — Edu-Space`,
|
||||
commission,
|
||||
enrollments: [],
|
||||
classroom: null,
|
||||
recent_reservation: null,
|
||||
role: req.user?.role || 'admin'
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('Error in my_subjects detail:', err.message);
|
||||
res.redirect('/my_subjects/my_subjects_list');
|
||||
}
|
||||
};
|
||||
|
||||
router.get(['/', '/list', '/my_subjects_list'], handleMySubjectsList);
|
||||
router.get(['/detail', '/commission_detail', '/:id', '/detail/:id'], handleMySubjectDetail);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user