import { useSession } from "next-auth/react";

const getCompanyTypeFromSession = (session: unknown): string | undefined => {
  if (!session || typeof session !== "object") return undefined;

  const sessionRecord = session as Record<string, unknown>;
  const directCompanyType = sessionRecord.role;
  if (typeof directCompanyType === "string") return directCompanyType;

  const company = sessionRecord.company;
  if (company && typeof company === "object") {
    const companyType = (company as Record<string, unknown>).companyType;
    if (typeof companyType === "string") return companyType;
  }

  return undefined;
};

const getCompanyIdFromSession = (session: unknown): string | undefined => {
  if (!session || typeof session !== "object") return undefined;

  const sessionRecord = session as Record<string, unknown>;
  const directCompanyId = sessionRecord.companyId;
  if (typeof directCompanyId === "string") return directCompanyId;

  const company = sessionRecord.company;
  if (company && typeof company === "object") {
    const companyRecord = company as Record<string, unknown>;
    const nestedCompanyId = companyRecord.id;
    if (typeof nestedCompanyId === "string") return nestedCompanyId;
  }

  return undefined;
};

export const useSessionCompanyType = () => {
  const { data: session } = useSession();
  const companyType = getCompanyTypeFromSession(session);
  const companyId = getCompanyIdFromSession(session);

  return {
    companyId,
    companyType,
    isBrokerCompany: companyType === "broker",
    isBuilderCompany: companyType === "builder",
  };
};
