// Helpers plans partageables client ET serveur (PAS de `server-only` ni d'import
// DB ici, sinon le bundle client tire mysql2). La logique de lecture/mutation
// reste dans `src/lib/db/queries/plans.ts` (server-only).

// Plans « per-seat » : facturation au siège actif via la grille `pricing_tiers`
// (chantier pricing per-seat Lot 1, mf_ask #128). Pour ces plans, les colonnes
// `monthly_price`/`yearly_price` (= 0) et `max_*` (= -1) ne sont PAS les sources
// de vérité — `pricing_tiers` pilote le prix. Les éditer comme un plan flat n'a
// aucun effet côté app : le panel les rend donc read-only (UI + Route Handler).
// Aujourd'hui seul `flex` est concerné (passé `visible=1` au Lot 4, mf_ask #134
// — désormais le seul plan vendable).
export function isPerSeatPlan(code: string): boolean {
  return code === "flex";
}

// Plans flat « legacy » (starter/pro/enterprise) : conservés en base pour les
// tenants historiques (FK `tenant_subscriptions.plan_id`) mais DÉPRÉCIÉS depuis
// la bascule per-seat (Lot 4, mf_ask #134) — passés `visible=0`, `flex` est
// désormais le seul plan vendable. On les verrouille en lecture seule côté panel
// (UI + Route Handler) pour empêcher de les ré-exposer (remettre `visible=1`) au
// signup public. Suppression définitive = Lot 6.
export function isLegacyFlatPlan(code: string): boolean {
  return code === "starter" || code === "pro" || code === "enterprise";
}

// Un plan est éditable depuis le panel s'il n'est ni per-seat (piloté par
// `pricing_tiers`) ni legacy déprécié. Source unique de vérité partagée par la
// grille (bouton Modifier) et le Route Handler (garde-fou PATCH).
export function isPlanEditable(code: string): boolean {
  return !isPerSeatPlan(code) && !isLegacyFlatPlan(code);
}
