import LoginClient from "@/app/login/login-client";
import SponsoredBannerFormClient from "@/app/banners-patrocinados/form-client";
import { createAdminClient } from "@/lib/supabase-admin";
import { createClient } from "@/lib/supabase-server";
import { isOwnerUser } from "@/lib/owner-auth";

type SponsoredBannerRow = {
  id: string;
  placement: string;
  title: string | null;
  link_url: string | null;
  open_in_new_tab: boolean;
  image_url: string;
  image_alt: string | null;
  active: boolean;
  position: number;
  start_at: string | null;
  end_at: string | null;
  config: Record<string, unknown> | null;
};

export default async function OwnerSponsoredBannerEditPage({ params }: { params: Promise<{ id: string }> }) {
  const { id } = await params;

  const supabase = await createClient();
  const {
    data: { user },
  } = await supabase.auth.getUser();

  if (!user) {
    return <LoginClient />;
  }

  if (!isOwnerUser({ id: user.id, email: user.email })) {
    return (
      <div className="min-h-screen flex items-center justify-center p-6 bg-slate-50">
        <div className="w-full max-w-lg rounded-2xl bg-white p-8 shadow-sm border border-slate-200 text-center">
          <h1 className="text-xl font-semibold text-slate-900">Acesso negado</h1>
          <p className="text-sm text-slate-500 mt-2">Seu usuário não tem permissão para acessar este painel.</p>
        </div>
      </div>
    );
  }

  const admin = createAdminClient();
  const { data } = 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("id", id)
    .maybeSingle();

  const row = data as SponsoredBannerRow | null;
  const banner = row
    ? {
        id: row.id,
        placement: row.placement,
        title: row.title,
        link_url: row.link_url,
        open_in_new_tab: Boolean(row.open_in_new_tab),
        image_url: row.image_url,
        image_alt: row.image_alt,
        active: Boolean(row.active),
        position: Number(row.position || 0),
        start_at: row.start_at,
        end_at: row.end_at,
        config: row.config || {},
      }
    : null;

  if (!banner) {
    return (
      <div className="min-h-screen flex items-center justify-center p-6 bg-slate-50">
        <div className="w-full max-w-lg rounded-2xl bg-white p-8 shadow-sm border border-slate-200 text-center">
          <h1 className="text-xl font-semibold text-slate-900">Banner não encontrado</h1>
          <p className="text-sm text-slate-500 mt-2">Este banner pode ter sido removido.</p>
          <div className="mt-5">
            <a
              href="/banners-patrocinados"
              className="inline-flex h-11 items-center justify-center rounded-xl bg-slate-900 px-5 text-sm font-semibold text-white shadow-sm transition hover:bg-slate-800"
            >
              Voltar para listagem
            </a>
          </div>
        </div>
      </div>
    );
  }

  return <SponsoredBannerFormClient mode="edit" initial={banner} />;
}
