import { NextRequest, NextResponse } from 'next/server';
import { prisma } from '@/lib/prisma';

// POST /api/tasks/[id]/collaborators
export async function POST(req: NextRequest, { params }: { params: Promise<{ id: string }> }) {
  const resolvedParams = await params;
  const taskId = parseInt(resolvedParams.id);
  const { email } = await req.json();
  if (!email) {
    return NextResponse.json({ error: 'Email requis' }, { status: 400 });
  }
  try {
    const user = await prisma.user.findUnique({ where: { email } });
    if (!user) {
      return NextResponse.json({ error: 'Utilisateur non trouvé' }, { status: 404 });
    }
    // Vérifie si déjà collaborateur
    const existing = await prisma.taskCollaborator.findFirst({ where: { taskId, userId: user.id } });
    if (existing) {
      return NextResponse.json({ error: 'Déjà collaborateur' }, { status: 409 });
    }
    const collab = await prisma.taskCollaborator.create({
      data: {
        taskId,
        userId: user.id,
        role: 'viewer',
      },
    });
    return NextResponse.json(collab, { status: 201 });
  } catch (e) {
    return NextResponse.json({ error: 'Erreur serveur', details: String(e) }, { status: 500 });
  }
}

// DELETE /api/tasks/[id]/collaborators?userId=XX
export async function DELETE(req: NextRequest, { params }: { params: Promise<{ id: string }> }) {
  const resolvedParams = await params;
  const taskId = parseInt(resolvedParams.id);
  const { searchParams } = new URL(req.url);
  const userId = parseInt(searchParams.get('userId') || '');
  if (!userId) {
    return NextResponse.json({ error: 'userId requis' }, { status: 400 });
  }
  try {
    await prisma.taskCollaborator.deleteMany({ where: { taskId, userId } });
    return NextResponse.json({ success: true });
  } catch (e) {
    return NextResponse.json({ error: 'Erreur serveur', details: String(e) }, { status: 500 });
  }
} 