import { NextResponse } from "next/server";
import { createClient } from "@/lib/supabase-server";
import { canManageFinancialCritical, getCompanyContext } from "@/lib/company-context";
import { transferirEntreContas } from "@/lib/financeiro/transferencia";

export const runtime = "nodejs";

export async function POST(req: Request) {
  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 (!canManageFinancialCritical(ctx, user.id)) {
    return NextResponse.json({ error: "Sem permissão." }, { status: 403 });
  }

  const body = (await req.json().catch(() => null)) as
    | {
        source_bank_account_id?: unknown;
        destination_bank_account_id?: unknown;
        amount?: unknown;
        date?: unknown;
        reason?: unknown;
      }
    | null;

  const resultado = await transferirEntreContas({
    supabase,
    companyId: ctx.companyId,
    tenantIds: ctx.tenantIds?.length ? ctx.tenantIds : [user.id],
    userId: user.id,
    body,
  });
  return NextResponse.json(resultado.corpo, resultado.ok ? undefined : { status: resultado.status });
}
