import LoginClient from "@/app/login/login-client";
import PainelDosModelos, { type ModeloEnviado } from "./painel-client";
import { createAdminClient } from "@/lib/supabase-admin";
import { createClient } from "@/lib/supabase-server";
import { isOwnerUser } from "@/lib/owner-auth";

/*
  Modelos da comunidade (migration 227): as artes que os assinantes publicam
  como modelo. Pendente até o dono aprovar; aprovado entra na galeria de
  modelos de todas as empresas, com o nome e o avatar de quem fez.
*/

const CAMPOS = "id,user_id,nome,descricao,tipo,ramo,largura,altura,paginas,miniatura,autor_nome,autor_avatar,autor_loja,status,motivo,usos,avaliado_em,avaliado_por,created_at";

export default async function ModelosDaComunidadePage() {
  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, error } = await admin.from("modelos_da_comunidade").select(CAMPOS).order("created_at", { ascending: false }).limit(500);
  const faltaATabela = Boolean(error && (error.code === "42P01" || error.code === "PGRST205"));
  return <PainelDosModelos inicial={(data || []) as ModeloEnviado[]} faltaATabela={faltaATabela} />;
}
