// Pure utility functions shared across all views

export const gradeWeights = {
  Excellent: 4,
  "Très bien": 3,
  Bien: 2,
  "Assez bien": 1,
  Redouble: 0,
};

export function calcIMC(weight, height) {
  if (!weight || !height) return 0;
  const h = height / 100;
  return parseFloat((weight / (h * h)).toFixed(1));
}

export function getIMCInterpretation(imc) {
  if (!imc || imc <= 0) return "-";
  if (imc < 16) return "Maigreur sévère";
  if (imc < 17) return "Maigreur modérée";
  if (imc < 18.5) return "Maigreur légère";
  if (imc < 25) return "Corpulence normale";
  if (imc < 30) return "Surpoids";
  if (imc < 35) return "Obésité modérée (I)";
  if (imc < 40) return "Obésité sévère (II)";
  return "Obésité morbide (III)";
}

export function getIMCBgClass(imc) {
  if (!imc || imc <= 0) return "bg-gray-300";
  if (imc >= 18.5 && imc < 25) return "bg-green-500";
  if (imc < 18.5) return "bg-sky-400";
  if (imc < 30) return "bg-amber-500";
  return "bg-red-500";
}

export function getAnxietyLabel(s) {
  if (s <= 4) return "Minime";
  if (s <= 9) return "Légère";
  if (s <= 14) return "Modérée";
  return "Sévère";
}

export function getAnxietyColor(s) {
  if (s <= 4) return "bg-green-50 text-green-700 border-green-200";
  if (s <= 9) return "bg-yellow-50 text-yellow-700 border-yellow-200";
  if (s <= 14) return "bg-orange-50 text-orange-700 border-orange-200";
  return "bg-red-50 text-red-700 border-red-200";
}

export function getLifestyleBg(l) {
  return (
    {
      Inactif: "bg-red-500",
      Sédentaire: "bg-orange-500",
      Actif: "bg-blue-500",
      "Très actif": "bg-green-500",
    }[l] || "bg-gray-400"
  );
}

export function getGradeStyle(g) {
  return (
    {
      Redouble: "bg-red-50 text-red-600 border-red-200",
      "Assez bien": "bg-sky-50 text-sky-600 border-sky-200",
      Bien: "bg-blue-50 text-blue-600 border-blue-200",
      "Très bien": "bg-indigo-50 text-indigo-600 border-indigo-200",
      Excellent: "bg-green-50 text-green-600 border-green-200",
      "Non noté": "bg-gray-50 text-gray-400 border-gray-100",
    }[g] || "bg-gray-50"
  );
}

export function getGradeBgClass(g) {
  return (
    {
      Excellent: "bg-green-500",
      "Très bien": "bg-indigo-600",
      Bien: "bg-blue-600",
      "Assez bien": "bg-sky-500",
      Redouble: "bg-red-500",
      "Non noté": "bg-gray-300",
    }[g] || "bg-gray-400"
  );
}

export function formatDate(d) {
  return new Date(d).toLocaleDateString("fr-FR", {
    day: "numeric",
    month: "short",
    year: "numeric",
  });
}
