import { Salarie } from "@/types/type";

export function formatAddress(salarie: Salarie | null) {
    if (!salarie) return "";

    return [
        `${salarie.TIT ?? ""} ${salarie.PRE ?? ""} ${salarie.NSA ?? ""}`,
        salarie.ADR,
        `${salarie.COP ?? ""} ${salarie.VIL ?? ""}`,
    ]
        .filter(Boolean)
        .join("\n");
}

export function formatSingleLineAddress(salarie: Salarie | null) {
    if (!salarie) return "";

    return [
        `${salarie.TIT ?? ""} ${salarie.PRE ?? ""} ${salarie.NSA ?? ""}`,
        salarie.ADR?.replace(/\\r\\n|\\r|\\n|\r\n|\r|\n/g, " - "),
        `${salarie.COP ?? ""} ${salarie.VIL ?? ""}`,
    ]
        .filter(Boolean)
        .join(" - ");
}

export function formatPhone(value?: string | number | null) {
  if (!value) return "";

  let digits = String(value).replace(/\D/g, "");

  if (digits.length === 9) {
    digits = "0" + digits;
  }

  return digits.replace(/(\d{2})(?=\d)/g, "$1 ").trim();
}
export function formatNSS(nss?: string | null) {
  if (!nss) return "";

  const digits = nss.replace(/\D/g, "");

  return digits.replace(
    /^(\d)(\d{2})(\d{2})(\d{2})(\d{3})(\d{3})(\d{2})$/,
    "$1 $2 $3 $4 $5 $6 $7"
  );
}

export function formatIBAN(iban?: string | null) {
  if (!iban) return "";

  return iban
    .replace(/\s/g, "")
    .match(/.{1,4}/g)
    ?.join(" ") ?? "";
}

export function formatDate(date?: string | Date | null) {
    if (!date) return "";

    // Date déjà au format FR
    if (typeof date === "string" && date.includes("/")) {
        return date;
    }

    return new Date(date).toLocaleDateString("fr-FR");
}
export function formatDateForInput(date?: string | Date | null) {
  if (!date) return "";

  const parsedDate = new Date(date);

  if (Number.isNaN(parsedDate.getTime())) {
    return "";
  }

  return parsedDate.toISOString().split("T")[0];
}