import { NextResponse } from "next/server";
import { createAdminClient, createClient } from "@/lib/supabase-server";

function normalizePlacement(value: unknown) {
  const cleaned = typeof value === "string" ? value.trim() : "";
  return cleaned || "admin.meus_fornecedores.top";
}

export async function GET(request: Request) {
  const supabase = await createClient();
  const {
    data: { user },
  } = await supabase.auth.getUser();

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

  const { searchParams } = new URL(request.url);
  const placement = normalizePlacement(searchParams.get("placement"));

  const admin = createAdminClient();
  const now = new Date().toISOString();
  const { data, error } = await admin
    .from("sponsored_banners")
    .select("id,placement,title,link_url,open_in_new_tab,image_url,image_alt,active,position,start_at,end_at,config")
    .eq("placement", placement)
    .eq("active", true)
    .or(`start_at.is.null,start_at.lte.${now}`)
    .or(`end_at.is.null,end_at.gte.${now}`)
    .order("position", { ascending: true })
    .order("created_at", { ascending: false });

  if (error) {
    return NextResponse.json({ error: "Não foi possível carregar os banners." }, { status: 400 });
  }

  return NextResponse.json({ ok: true, banners: data || [] });
}

