import { NextResponse } from "next/server";

import { auth } from "@/src/auth";
import { rimuoviArticoloDaMacchina } from "@/src/lib/artMacchineParti";

interface RouteParams {
  params: Promise<{ idmacchina: string; idart: string }>;
}

export async function DELETE(request: Request, { params }: RouteParams) {
  const session = await auth();

  if (!session?.user) {
    return NextResponse.json({ error: "Non autorizzato" }, { status: 401 });
  }

  const { idmacchina, idart } = await params;
  const macchinaId = parseInt(idmacchina, 10);
  const articoloId = parseInt(idart, 10);

  if (isNaN(macchinaId) || isNaN(articoloId)) {
    return NextResponse.json({ error: "ID non validi" }, { status: 400 });
  }

  try {
    const body = await request.json();
    const { quantita, opzione, idMagazzino } = body;

    if (!quantita || quantita <= 0) {
      return NextResponse.json(
        { error: "Quantità non valida" },
        { status: 400 }
      );
    }

    if (!opzione || !["carico", "elimina"].includes(opzione)) {
      return NextResponse.json(
        { error: "Opzione non valida (carico o elimina)" },
        { status: 400 }
      );
    }

    if (opzione === "carico" && !idMagazzino) {
      return NextResponse.json(
        { error: "Seleziona un magazzino per il rientro" },
        { status: 400 }
      );
    }

    const result = await rimuoviArticoloDaMacchina(
      articoloId,
      macchinaId,
      quantita,
      opzione,
      session.user.email || session.user.name || "unknown",
      idMagazzino
    );

    return NextResponse.json(result);
  } catch (error) {
    console.error("[API art-macchine-parti/:idmacchina/:idart] Errore DELETE:", error);
    const message = error instanceof Error ? error.message : "Errore nella rimozione";
    return NextResponse.json({ error: message }, { status: 500 });
  }
}
