const express = require('express'); const fs = require('fs'); const path = require('path'); const router = express.Router(); const authMiddleware = require('../../../Middlewares/authMiddleware'); const { logger } = require('../../../config/logs'); /** * @swagger * /api/dpanel/users/search: * get: * tags: * - Users * summary: Search for users by name or ID * parameters: * - in: query * name: term * required: true * schema: * type: string * description: Search term (name or ID) * - in: query * name: username * required: false * schema: * type: string * description: Exact username to search for * responses: * 200: * description: Search results * content: * application/json: * schema: * type: object * properties: * users: * type: array * items: * type: object * properties: * id: * type: string * name: * type: string * profilePicture: * type: string * found: * type: boolean * user: * type: object * 500: * description: Internal server error */ router.get('/', authMiddleware, async (req, res) => { try { const { term, username } = req.query; const userFilePath = path.join(__dirname, '../../../data', 'user.json'); const users = JSON.parse(fs.readFileSync(userFilePath, 'utf8')); if (username) { // Search for exact username match (for collaboration search) const user = users.find(u => u.name.toLowerCase() === username.toLowerCase()); if (user) { res.json({ found: true, user: { id: user.id, name: user.name, profilePicture: user.profilePicture } }); } else { res.json({ found: false }); } } else if (term) { // Search for users by term (for general user search) const searchTerm = term.toLowerCase(); const filteredUsers = users.filter(user => user.name.toLowerCase().includes(searchTerm) || user.id.toLowerCase().includes(searchTerm) ).map(user => ({ id: user.id, name: user.name, profilePicture: user.profilePicture })); res.json({ users: filteredUsers }); } else { res.status(400).json({ error: 'Search term or username required' }); } } catch (error) { logger.error('Error searching users:', error); res.status(500).json({ error: 'Internal server error' }); } }); module.exports = router;