export class UserController { constructor(getMeHandler, getAllUsersHandler, getUserByIdHandler, updateProfileHandler) { this.getMeHandler = getMeHandler; this.getAllUsersHandler = getAllUsersHandler; this.getUserByIdHandler = getUserByIdHandler; this.updateProfileHandler = updateProfileHandler; } async getMe(req, res, next) { try { const user = await this.getMeHandler.handle({ userId: req.user.id }); res.json({ success: true, data: user.toJSON() }); } catch (error) { next(error); } } async getAllUsers(req, res, next) { try { const users = await this.getAllUsersHandler.handle({}); res.json({ success: true, data: users.map(u => u.toJSON()) }); } catch (error) { next(error); } } async getUserById(req, res, next) { try { const user = await this.getUserByIdHandler.handle({ userId: req.params.id }); res.json({ success: true, data: user.toJSON() }); } catch (error) { next(error); } } async updateProfile(req, res, next) { try { const { name, email } = req.body; const user = await this.updateProfileHandler.handle({ userId: req.user.id, name, email }); res.json({ success: true, message: 'Profile updated successfully', data: user.toJSON() }); } catch (error) { next(error); } } }