import { NextRequest, NextResponse } from "next/server";
import { getServerSession } from "next-auth";
import { authOptions } from "@/app/api/auth/authOptions";
import { prisma } from "@/lib/prisma";
import { unlink } from "fs/promises";
import { join } from "path";
import { existsSync } from "fs";

export async function DELETE(
  req: NextRequest,
  { params }: { params: Promise<{ id: string }> }
) {
  try {
    const session = await getServerSession(authOptions);
    if (!session?.user) {
      return NextResponse.json({ error: "Accès refusé" }, { status: 403 });
    }

    const { id } = await params;
    const messageId = parseInt(id);
    const currentUserId = parseInt(session.user.id);

    // Vérifier que le message existe et appartient à l'utilisateur actuel
    const message = await prisma.message.findUnique({
      where: { id: messageId },
      select: { senderId: true, fileUrl: true }
    });

    if (!message) {
      return NextResponse.json({ error: "Message introuvable" }, { status: 404 });
    }

    if (message.senderId !== currentUserId) {
      return NextResponse.json({ error: "Vous ne pouvez supprimer que vos propres fichiers" }, { status: 403 });
    }

    if (!message.fileUrl) {
      return NextResponse.json({ error: "Ce message ne contient pas de fichier" }, { status: 400 });
    }

    // Supprimer le fichier physique du serveur
    if (message.fileUrl.startsWith('/uploads/')) {
      const filePath = join(process.cwd(), 'public', message.fileUrl);
      if (existsSync(filePath)) {
        await unlink(filePath);
      }
    }

    // Mettre à jour la base de données
    await prisma.message.update({
      where: { id: messageId },
      data: {
        fileUrl: null,
        fileName: null,
        fileSize: null
      }
    });

    return NextResponse.json({ success: true });
  } catch (error) {
    console.error('Erreur lors de la suppression du fichier:', error);
    return NextResponse.json(
      { error: "Erreur lors de la suppression du fichier" },
      { status: 500 }
    );
  }
} 