diff --git a/backend/src/routes/schedule.js b/backend/src/routes/schedule.js index 4fccf9b..a3360ca 100644 --- a/backend/src/routes/schedule.js +++ b/backend/src/routes/schedule.js @@ -240,17 +240,24 @@ router.get('/:id', authMiddleware, async (req, res) => { const itm = await isToolManagerFn(req.schema, req.user); if (!(await canViewEvent(req.schema, event, req.user.id, itm))) return res.status(403).json({ error: 'Access denied' }); await enrichEvent(req.schema, event); - if (event.track_availability && itm) { + const isMember = !itm && !!(await queryOne(req.schema, ` + SELECT 1 FROM event_user_groups eug + JOIN user_group_members ugm ON ugm.user_group_id=eug.user_group_id + WHERE eug.event_id=$1 AND ugm.user_id=$2 + `, [event.id, req.user.id])); + if (event.track_availability && (itm || isMember)) { event.availability = await query(req.schema, ` SELECT ea.response, ea.updated_at, u.id AS user_id, u.name, u.display_name, u.avatar FROM event_availability ea JOIN users u ON u.id=ea.user_id WHERE ea.event_id=$1 `, [req.params.id]); - const assignedIds = (await query(req.schema, ` - SELECT DISTINCT ugm.user_id FROM event_user_groups eug - JOIN user_group_members ugm ON ugm.user_group_id=eug.user_group_id WHERE eug.event_id=$1 - `, [req.params.id])).map(r => r.user_id); - const respondedIds = new Set(event.availability.map(r => r.user_id)); - event.no_response_count = assignedIds.filter(id => !respondedIds.has(id)).length; + if (itm) { + const assignedIds = (await query(req.schema, ` + SELECT DISTINCT ugm.user_id FROM event_user_groups eug + JOIN user_group_members ugm ON ugm.user_group_id=eug.user_group_id WHERE eug.event_id=$1 + `, [req.params.id])).map(r => r.user_id); + const respondedIds = new Set(event.availability.map(r => r.user_id)); + event.no_response_count = assignedIds.filter(id => !respondedIds.has(id)).length; + } } const mine = await queryOne(req.schema, 'SELECT response FROM event_availability WHERE event_id=$1 AND user_id=$2', [req.params.id, req.user.id]); event.my_response = mine?.response || null; diff --git a/frontend/src/components/SchedulePage.jsx b/frontend/src/components/SchedulePage.jsx index 9db8d25..984f77d 100644 --- a/frontend/src/components/SchedulePage.jsx +++ b/frontend/src/components/SchedulePage.jsx @@ -835,12 +835,12 @@ function EventDetailModal({ event, onClose, onEdit, onAvailabilityChange, isTool ))} )} - {isToolManager&&( + {(isToolManager||avail.length>0)&&( <>
Responses
{Object.entries(counts).map(([k,n])=>{n} {RESP_LABEL[k]})} - {event.no_response_count||0} No response + {isToolManager&&{event.no_response_count||0} No response}
{avail.length>0&&(