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

/**
 * A biblioteca de precificação, pronta para a tela consumir.
 *
 * Conteúdo global e curado: os produtos-modelo do ramo com suas receitas, e os
 * itens avulsos para quem monta do zero. Estrutura vem daqui; custo nunca —
 * cada linha da receita diz o que entra e como consome, e o número em reais é
 * sempre do usuário.
 *
 * Leitura direta com o client da sessão: as tabelas têm RLS de select para
 * qualquer autenticado e nenhuma policy de escrita, então não há o que vazar
 * nem o que corromper por aqui.
 */
export async function GET() {
  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, "pricing.read")) {
    return NextResponse.json({ error: "Sem permissão." }, { status: 403 });
  }

  const [itens, modelos] = await Promise.all([
    supabase
      .from("pricing_library_items")
      .select("slug,kind,name,unit,consumption_base,consumption_default,waste_pct_default,minutes_default,setup_minutes_default,segment,search_terms,sort_order,purchase_format,roll_width_m,roll_length_m,package_qty,sheet_width_m,sheet_height_m")
      .eq("is_active", true)
      .order("segment")
      .order("sort_order"),
    supabase
      .from("pricing_library_templates")
      .select("slug,name,segment,unit_type,description,reference_width_m,reference_height_m,recipe,sort_order")
      .eq("is_active", true)
      .order("sort_order"),
  ]);

  if (itens.error) return NextResponse.json({ error: itens.error.message }, { status: 400 });
  if (modelos.error) return NextResponse.json({ error: modelos.error.message }, { status: 400 });

  return NextResponse.json({ itens: itens.data, modelos: modelos.data });
}
