import { NextResponse } from "next/server";
import { canCompany, getCompanyContext } from "@/lib/company-context";
import { createClient } from "@/lib/supabase-server";
import { syncPedidosXbz } from "@/lib/xbz/xbz.sync";

/*
  Sincronização sob demanda dos pedidos já enviados para a XBZ.

  Duas correções em relação à versão anterior: exigia `company.settings`, que
  não é a chave de quem trabalha com fornecedor; e mandava varrer os pedidos de
  TODAS as empresas da plataforma, então o clique de uma empresa gastava a cota
  diária das outras. Agora pede `suppliers.write` (isto muda o status dos
  pedidos) e roda só na empresa de quem chamou.
*/
export async function POST() {
  try {
    const supabase = await createClient();
    const {
      data: { user },
      error: userError,
    } = await supabase.auth.getUser();

    if (userError || !user) {
      return NextResponse.json({ error: "Não autenticado." }, { status: 401 });
    }

    const ctx = await getCompanyContext(supabase, user);
    if (!canCompany(ctx, user.id, "suppliers.xbz.write")) {
      return NextResponse.json({ error: "Sem permissão." }, { status: 403 });
    }

    const result = await syncPedidosXbz(ctx.ownerId || user.id);
    return NextResponse.json({
      ok: true,
      message: "Sincronização executada.",
      result,
    });
  } catch (error) {
    return NextResponse.json(
      { error: error instanceof Error ? error.message : "Falha ao sincronizar pedidos XBZ." },
      { status: 400 }
    );
  }
}
