import type { ApplicantProfile } from "./schema";

export function formatImpairments(list?: ApplicantProfile["impairments"]): string {
  if (!list?.length) return "";
  return list
    .map((item) => {
      const attrs = Object.entries(item.attributes || {})
        .filter(([key, val]) => val !== true && key !== "disclosed")
        .map(([key, val]) => `${key}=${String(val)}`);
      return attrs.length ? `${item.module} (${attrs.join(", ")})` : item.module;
    })
    .join("; ");
}

export function formatProfileValue(value: unknown): string {
  if (value == null || value === "") return "";
  if (Array.isArray(value)) {
    if (value.length === 0) return "";
    if (value.every((v) => v && typeof v === "object" && "module" in (v as object))) {
      return formatImpairments(value as ApplicantProfile["impairments"]);
    }
    return value
      .map((v) => (v && typeof v === "object" ? JSON.stringify(v) : String(v)))
      .join(", ");
  }
  if (typeof value === "object") return JSON.stringify(value);
  return String(value);
}
