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); router.get(['/gradebook/:id', '/:id/gradebook'], (req, res) => res.redirect(`/schedule/gradebook/${req.params.id}`)); router.get(['/grades', '/my_grades', '/mis-notas'], (req, res) => res.redirect('/schedule/my_grades')); module.exports = router;