import { UserRole } from '../enums/index.js';

export function isPortalRole(role: UserRole): boolean {
  return role === UserRole.CUSTOMER_PORTAL || role === UserRole.SUPPLIER_PORTAL;
}

export function getPortalHomePath(role: UserRole): string | null {
  if (role === UserRole.CUSTOMER_PORTAL) return '/portal/customer';
  if (role === UserRole.SUPPLIER_PORTAL) return '/portal/supplier';
  return null;
}

export function buildPortalInviteUrl(inviteId: string, baseUrl = ''): string {
  const origin = baseUrl || (typeof window !== 'undefined' ? window.location.origin : '');
  return `${origin}/portal/accept?invite=${inviteId}`;
}

export function getPostAuthPath(options: {
  role?: UserRole | null;
  hasOrganisation: boolean;
  pendingInviteId?: string | null;
}): string {
  if (options.pendingInviteId) {
    return `/portal/accept?invite=${options.pendingInviteId}`;
  }
  if (!options.hasOrganisation) {
    return '/onboarding';
  }
  if (options.role === UserRole.EXTERNAL_AUDITOR) {
    return '/audits';
  }
  if (options.role && isPortalRole(options.role)) {
    return getPortalHomePath(options.role) ?? '/';
  }
  return '/';
}
