export const dynamic = "force-dynamic";
import { cookies } from "next/headers";
import { createSbServer } from "@/lib/supabaseServer";
import { redirect } from "next/navigation";
import { Metadata } from "next";
import ParrainageClient from "./ParrainageClient";

export const metadata: Metadata = {
  title: "Programme de parrainage | Espace Paie Odentas",
  description: "Parrainez vos connaissances et bénéficiez de réductions sur vos factures",
};

export default async function ParrainagePage() {
  const sb = createSbServer();
  const { data: { user } } = await sb.auth.getUser();
  
  if (!user) {
    redirect("/signin");
  }

  // Vérifier si l'utilisateur est staff
  const { data: staffData } = await sb
    .from("staff_users")
    .select("is_staff")
    .eq("user_id", user.id)
    .maybeSingle();
  
  const isStaff = !!staffData?.is_staff;
  
  let organizationId: string | null = null;
  let organizations: Array<{ id: string; name: string }> = [];

  if (isStaff) {
    // Staff : récupérer toutes les organisations pour le sélecteur
    const { data: orgsData } = await sb
      .from("organizations")
      .select("id, name")
      .order("name");
    
    organizations = orgsData || [];
    
    // Récupérer l'organisation sélectionnée depuis le cookie
    const c = cookies();
    const activeOrgId = c.get("active_org_id")?.value;
    organizationId = activeOrgId || (organizations.length > 0 ? organizations[0].id : null);
  } else {
    // Client : récupérer son organisation
    const { data: memberData } = await sb
      .from("organization_members")
      .select("org_id")
      .eq("user_id", user.id)
      .eq("revoked", false)
      .maybeSingle();

    if (!memberData?.org_id) {
      return (
        <main className="p-6">
          <h1 className="text-lg font-semibold">Accès refusé</h1>
          <p className="text-sm text-slate-600">
            Vous devez appartenir à une organisation pour accéder au programme de parrainage.
          </p>
        </main>
      );
    }
    
    organizationId = memberData.org_id;
  }

  return (
    <ParrainageClient 
      isStaff={isStaff} 
      organizations={organizations}
      initialOrgId={organizationId}
    />
  );
}
