import { NextRequest, NextResponse } from 'next/server'; import { prisma } from '@/lib/prisma'; import { getCurrentUser } from '@/lib/auth'; // GET - Récupérer un message spécifique export async function GET( request: NextRequest, { params }: { params: { id: string } } ) { try { const user = await getCurrentUser(); if (!user) { return NextResponse.json({ error: 'Non autorisé' }, { status: 401 }); } const message = await prisma.message.findUnique({ where: { id: params.id }, include: { sender: { select: { id: true, email: true, name: true, }, }, conversation: { include: { participants: true, }, }, files: true, }, }); if (!message) { return NextResponse.json({ error: 'Message non trouvé' }, { status: 404 }); } // Vérifier que l'utilisateur est participant à la conversation const isParticipant = message.conversation.participants.some( (p) => p.userId === user.id ); if (!isParticipant) { return NextResponse.json({ error: 'Accès non autorisé' }, { status: 403 }); } return NextResponse.json(message); } catch (error) { console.error('Erreur lors de la récupération du message:', error); return NextResponse.json({ error: 'Erreur serveur' }, { status: 500 }); } } // PUT - Mettre à jour un message export async function PUT( request: NextRequest, { params }: { params: { id: string } } ) { try { const user = await getCurrentUser(); if (!user) { return NextResponse.json({ error: 'Non autorisé' }, { status: 401 }); } const body = await request.json(); const { content } = body; const message = await prisma.message.findUnique({ where: { id: params.id }, }); if (!message) { return NextResponse.json({ error: 'Message non trouvé' }, { status: 404 }); } // Vérifier que l'utilisateur est l'auteur du message if (message.senderId !== user.id) { return NextResponse.json( { error: 'Vous ne pouvez modifier que vos propres messages' }, { status: 403 } ); } const updatedMessage = await prisma.message.update({ where: { id: params.id }, data: { content }, include: { sender: { select: { id: true, email: true, name: true, }, }, files: true, }, }); return NextResponse.json(updatedMessage); } catch (error) { console.error('Erreur lors de la mise à jour du message:', error); return NextResponse.json({ error: 'Erreur serveur' }, { status: 500 }); } } // DELETE - Supprimer un message export async function DELETE( request: NextRequest, { params }: { params: { id: string } } ) { try { const user = await getCurrentUser(); if (!user) { return NextResponse.json({ error: 'Non autorisé' }, { status: 401 }); } const message = await prisma.message.findUnique({ where: { id: params.id }, }); if (!message) { return NextResponse.json({ error: 'Message non trouvé' }, { status: 404 }); } // Vérifier que l'utilisateur est l'auteur du message if (message.senderId !== user.id) { return NextResponse.json( { error: 'Vous ne pouvez supprimer que vos propres messages' }, { status: 403 } ); } await prisma.message.delete({ where: { id: params.id }, }); return NextResponse.json({ success: true }); } catch (error) { console.error('Erreur lors de la suppression du message:', error); return NextResponse.json({ error: 'Erreur serveur' }, { status: 500 }); } }