const FUSEAU = "Africa/Casablanca";

export function dateCourte(d: Date | null | undefined) {
  if (!d) return "—";
  return d.toLocaleDateString("fr-MA", { day: "2-digit", month: "2-digit", year: "numeric", timeZone: "UTC" });
}

export function dateLongue(d: Date | null | undefined) {
  if (!d) return "—";
  return d.toLocaleDateString("fr-FR", { weekday: "short", day: "numeric", month: "short", timeZone: "UTC" });
}

export function dateHeure(d: Date) {
  return d.toLocaleString("fr-FR", { dateStyle: "short", timeStyle: "short", timeZone: FUSEAU });
}

/** 1 250 000 → « 1,25 M MAD » ; 480 000 → « 480 k MAD ». */
export function montantCompact(v: number) {
  if (v >= 1_000_000) return `${(v / 1_000_000).toLocaleString("fr-FR", { maximumFractionDigits: 2 })} M MAD`;
  if (v >= 1_000) return `${Math.round(v / 1_000).toLocaleString("fr-FR")} k MAD`;
  return `${v.toLocaleString("fr-FR")} MAD`;
}

export function montant(v: number) {
  return `${v.toLocaleString("fr-FR", { minimumFractionDigits: 2, maximumFractionDigits: 2 })} MAD`;
}

/** Valeur d'un <input type="date"> (AAAA-MM-JJ). */
export function valeurDate(d: Date | null | undefined) {
  return d ? d.toISOString().slice(0, 10) : "";
}

/** Écart en jours entre une date et aujourd'hui (négatif = passé). */
export function joursDepuis(d: Date, aujourdHui: Date) {
  return Math.round((d.getTime() - aujourdHui.getTime()) / 86_400_000);
}
