// ============================================================
// DATI — alimenti e pazienti caricati da MongoDB via API.
// bootstrap() va atteso prima del primo render.
// Restano qui solo le costanti cliniche di riferimento.
// ============================================================

// Valori ematici di riferimento (range normali)
const BLOOD_REF = [
  {key:"creatinina", label:"Creatinina",    unit:"mg/dL", min:0.6, max:1.3},
  {key:"egfr",       label:"eGFR",          unit:"mL/min", min:90, max:120, lowerWorse:true},
  {key:"azotemia",   label:"Azotemia (BUN)",unit:"mg/dL", min:15, max:45},
  {key:"potassiemia",label:"Potassiemia",   unit:"mEq/L", min:3.5, max:5},
  {key:"fosforemia", label:"Fosforemia",    unit:"mg/dL", min:2.5, max:4.5},
  {key:"sodiemia",   label:"Sodiemia",      unit:"mEq/L", min:135, max:145},
  {key:"calcemia",   label:"Calcemia",      unit:"mg/dL", min:8.5, max:10.5},
  {key:"albumina",   label:"Albumina",      unit:"g/dL", min:3.5, max:5},
  {key:"emoglobina", label:"Emoglobina",    unit:"g/dL", min:12, max:16, lowerWorse:true},
  {key:"pth",        label:"PTH",           unit:"pg/mL", min:15, max:65},
];

// Valori da mostrare in anteprima nella riga del prelievo (priorità: K, P, Na + creatinina)
const PREVIEW_KEYS = ["creatinina","potassiemia","fosforemia","sodiemia"];

// Modalità di cottura selezionabili per ricette e ingredienti
const COTTURE = ["crudo","bollito","al vapore","al forno","alla griglia","in padella"];

// —— Helper prelievi ——
const MESI = ["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"];
function formatISO(iso){
  const d = new Date(iso+"T00:00:00");
  if(isNaN(d)) return iso;
  return `${d.getDate()} ${MESI[d.getMonth()]} ${d.getFullYear()}`;
}
function sortedEsami(patient){
  return [...(patient.esami||[])].sort((a,b)=> (a.iso<b.iso?1:a.iso>b.iso?-1:0));
}
function latestValues(patient){
  const e = sortedEsami(patient)[0];
  return e ? e.values : null;
}

window.NefroData = {
  FOODS: [],
  FOOD_BY_ID: {},
  PATIENTS: [],
  RECIPES: [],
  BLOOD_REF, PREVIEW_KEYS, COTTURE, formatISO, sortedEsami, latestValues,

  DOCTORS: [],
  ME: null,            // utente autenticato { id, role, username }
  MY_PATIENT: null,    // (ruolo paziente) i propri dati
  MY_WEEK: null,       // (ruolo paziente) il proprio piano salvato

  // Carica alimenti, pazienti, ricettario e medici dal backend (ruolo medico)
  async bootstrap(){
    const [foods, patients, recipes, doctors] = await Promise.all([
      window.NefroAPI.getFoods(),
      window.NefroAPI.getPatients(),
      window.NefroAPI.getRecipes(),
      window.NefroAPI.getDoctors(),
    ]);
    this.setFoods(foods);
    this.PATIENTS = patients;
    this.RECIPES = recipes;
    this.DOCTORS = doctors;
  },

  // Carica solo i dati del paziente autenticato (ruolo paziente)
  async bootstrapPatient(){
    const [foods, patient, week] = await Promise.all([
      window.NefroAPI.getFoods(),
      window.NefroAPI.myPatient(),
      window.NefroAPI.myWeek(),
    ]);
    this.setFoods(foods);
    this.MY_PATIENT = patient;
    this.MY_WEEK = week;   // { giorni } oppure null
  },

  setFoods(foods){
    this.FOODS = foods;
    this.FOOD_BY_ID = Object.fromEntries(foods.map(f => [f.id, f]));
  },
};
