const express = require('express'); const router = express.Router(); import pool from '../db'; import { getUserData } from '../services/memberService'; import { getUserRoles } from '../services/rolesService'; router.use((req, res, next) => { console.log(req.user); console.log('Time:', Date.now()) next() }) //get all users router.get('/', async (req, res) => { try { const result = await pool.query( `SELECT v.*, CASE WHEN EXISTS ( SELECT 1 FROM leave_of_absences l WHERE l.member_id = v.member_id AND l.deleted = 0 AND UTC_TIMESTAMP() BETWEEN l.start_date AND l.end_date ) THEN 1 ELSE 0 END AS on_loa FROM view_member_rank_status_all v;`); return res.status(200).json(result); } catch (err) { console.error('Error fetching users:', err); return res.status(500).json({ error: 'Failed to fetch users' }); } }); router.get('/me', async (req, res) => { if (req.user === undefined) return res.sendStatus(401) try { const { id, name, state } = await getUserData(req.user.id); const LOAData = await pool.query( `SELECT * FROM leave_of_absences WHERE member_id = ? AND deleted = 0 AND UTC_TIMESTAMP() BETWEEN start_date AND end_date;`, req.user.id); const roleData = await getUserRoles(req.user.id); const userDataFull = { id, name, state, LOAData, roleData }; console.log(userDataFull) res.status(200).json(userDataFull); } catch (error) { console.error('Error fetching user data:', error); return res.status(500).json({ error: 'Failed to fetch user data' }); } }) router.get('/:id', async (req, res) => { try { const userId = req.params.id; const result = await pool.query('SELECT * FROM view_member_rank_status_all WHERE id = $1;', [userId]); if (result.rows.length === 0) { return res.status(404).json({ error: 'User not found' }); } return res.status(200).json(result.rows[0]); } catch (err) { console.error('Error fetching user:', err); return res.status(500).json({ error: 'Failed to fetch user' }); } }); //update a user's display name (stub) router.put('/:id/displayname', async (req, res) => { // Stub: not implemented yet return res.status(501).json({ error: 'Update display name not implemented' }); }); module.exports = router;