import { ROLE } from "../constants/enums";

/** DB values that should be treated as admin (legacy / external panels). */
export const USER_TYPE_ALIASES: Record<string, ROLE> = {
  administrator: ROLE.ADMIN,
  superadmin: ROLE.ADMIN,
  super_admin: ROLE.ADMIN,
  staff: ROLE.ADMIN,
};

/** Lowercase strings that get sort priority 0 in admin user list (admins first). */
export const ADMIN_SORT_LABELS = [ROLE.ADMIN, ...Object.keys(USER_TYPE_ALIASES)];

export function resolveCanonicalRole(raw: unknown): ROLE {
  const normalized = raw ? String(raw).toLowerCase().trim() : "";
  const fromAlias = USER_TYPE_ALIASES[normalized];
  if (fromAlias) return fromAlias;
  if ((Object.values(ROLE) as string[]).includes(normalized)) {
    return normalized as ROLE;
  }
  return ROLE.USER;
}

export function isAdminUserType(raw: unknown): boolean {
  return resolveCanonicalRole(raw) === ROLE.ADMIN;
}
