type UserWithMemberships = {
  departmentMemberships?: Array<{
    isPrimary?: boolean;
    department?: { id?: string; name?: string; code?: string | null } | null;
    position?: { id?: string; name?: string; level?: number | null } | null;
  }>;
};

export const mapUserWithPrimaryOrg = <T extends Record<string, unknown>>(
  user: (T & UserWithMemberships) | null | undefined,
) => {
  if (!user) return user;
  const primary =
    user.departmentMemberships?.find((membership) => membership.isPrimary) ||
    user.departmentMemberships?.[0];
  return {
    ...user,
    department: primary?.department || null,
    position: primary?.position || null,
  };
};
