import { Request, Response } from 'express'; import { notificationService } from '../services/notificationService.js'; export const notificationController = { getUserNotifications: async (req: Request, res: Response) => { try { const organizationId = req.headers['x-organization-id'] as string; const userId = req.headers['x-user-id'] as string; // Assumindo que temos o ID do usuário (clerkId ou email) // Se não tiver userId no header (ainda não implementado auth full), tentar pegar do query ou usar um fallback // Nota: Idealmente o middleware de auth popula req.user. Vamos assumir que passamos x-user-id no frontend por enquanto. if (!organizationId) { return res.status(400).json({ error: 'Organization ID is required' }); } const notifications = await notificationService.getUserNotifications( userId, organizationId, req.query.includeArchived === 'true' ); res.json(notifications); } catch (error) { console.error(error); res.status(500).json({ error: 'Error fetching notifications' }); } }, markAsRead: async (req: Request, res: Response) => { try { const { id } = req.params; const notification = await notificationService.markAsRead(id as string); res.json(notification); } catch (error) { console.error(error); res.status(500).json({ error: 'Error marking notification as read' }); } }, markAllAsRead: async (req: Request, res: Response) => { try { const organizationId = req.headers['x-organization-id'] as string; const userId = req.headers['x-user-id'] as string; if (!organizationId) { return res.status(400).json({ error: 'Organization ID is required' }); } await notificationService.markAllAsRead(userId, organizationId); res.json({ success: true }); } catch (error) { console.error(error); res.status(500).json({ error: 'Error marking all as read' }); } }, clearAll: async (req: Request, res: Response) => { try { const organizationId = req.headers['x-organization-id'] as string; const userId = req.headers['x-user-id'] as string; if (!organizationId) { return res.status(400).json({ error: 'Organization ID is required' }); } await notificationService.clearAll(userId, organizationId); res.json({ success: true }); } catch (error) { console.error(error); res.status(500).json({ error: 'Error clearing all notifications' }); } }, archive: async (req: Request, res: Response) => { try { const { id } = req.params; const userId = req.headers['x-user-id'] as string; const notification = await notificationService.archive(id as string, userId); res.json(notification); } catch (error) { console.error(error); res.status(500).json({ error: 'Error archiving notification' }); } }, delete: async (req: Request, res: Response) => { try { const { id } = req.params; const userId = req.headers['x-user-id'] as string; await notificationService.softDelete(id as string, userId); res.json({ success: true }); } catch (error) { console.error(error); res.status(500).json({ error: 'Error deleting notification' }); } } };