import { NextResponse } from "next/server";
import { createClient } from "@/lib/supabase-server";
import { canCompany, getCompanyContext } from "@/lib/company-context";
import { avisarLoja } from "@/lib/loja/avisar-loja";
import { excluirProdutosComoOPainel } from "@/lib/produtos/servidor/excluir-produtos";

export const runtime = "nodejs";

/* A regra da exclusão mora em lib/produtos/servidor/excluir-produtos.ts, a
   mesma que o assistente (MCP) usa. */
export async function POST(req: Request) {
  try {
    const supabase = await createClient();
    const {
      data: { user },
    } = await supabase.auth.getUser();
    
    if (!user) {
      return NextResponse.json({ error: "Não autenticado" }, { status: 401 });
    }

    const ctx = await getCompanyContext(supabase, user);
    if (!canCompany(ctx, user.id, "products.catalog.write")) {
      return NextResponse.json({ error: "Sem permissão." }, { status: 403 });
    }
    const tenantIds = ctx.tenantIds?.length ? ctx.tenantIds : [user.id];

    const body = await req.json();
    const { productIds, forceDelete = false } = body;

    if (!Array.isArray(productIds) || productIds.length === 0) {
      return NextResponse.json({ error: "IDs de produtos inválidos" }, { status: 400 });
    }

    const feito = await excluirProdutosComoOPainel({ supabase, tenantIds, productIds, forceDelete: Boolean(forceDelete) });
    if (!feito.ok) return NextResponse.json({ error: feito.error }, { status: feito.status });

    avisarLoja(ctx.ownerId ?? ctx.companyId ?? user.id, req);
    return NextResponse.json({ success: true, ...feito.resultado });
  } catch (error) {
    console.error("Erro na exclusão em massa:", error);
    return NextResponse.json(
      { error: "Erro interno do servidor" }, 
      { status: 500 }
    );
  }
}
