import { getDbPool } from "@/db";
import { getSession, getSupportSession, type Session } from "@/lib/auth";
import { isClientSession } from "@/lib/authorization";

export type PortalContext = { session: Session; tenantId: string; isSupport: boolean; operatorName?: string };

/** Resolves the client portal tenant. Capital support is explicit, time-limited and visible in the portal UI. */
export async function getPortalContext(): Promise<PortalContext | null> {
  const session = await getSession();
  if (!session) return null;
  if (isClientSession(session) && session.tenantId) return { session, tenantId: session.tenantId, isSupport: false };
  if (session.role !== "capital_admin") return null;
  const support = await getSupportSession();
  if (!support || support.operatorId !== session.userId) return null;
  const [rows] = await getDbPool().execute("SELECT id FROM tenants WHERE id = ? AND status = 'active' LIMIT 1", [support.tenantId]);
  if (!(rows as { id?: string }[])[0]?.id) return null;
  return { session, tenantId: support.tenantId, isSupport: true, operatorName: support.operatorName };
}
