import 'dart:ui';
import 'package:cid_app/models.dart';

class GlobalData {
  // --- VARIABILI DI SESSIONE ---
  static String latoCorrente = 'A';
  static String? idScambioTemporaneo;
  static String? chiaveSegretaCorrente;
  static String? idSessione;
  static bool isPro = false; // Stato abbonamento RevenueCat

  // --- DATI GENERALI (NON CANCELLATI DAI RESET PARZIALI) ---
  static String data_incidente = "";
  static String ora = "";
  static String luogo = "";
  static String testimoni = "";
  static bool feriti = false;
  static bool Veicoli_danni_materiali_oltre = false;
  static bool Oggetti_diversi_danni_materiali = false;

  // --- DATI LATO A (BLU) ---
  static String Cognome_contraente_A = ""; static String Nome_contraente_A = ""; static String Codice_Fiscale_contraente_A = ""; static String Indirizzo_contraente_A = ""; static String CAP_contraente_A = ""; static String Stato_contraente_A = ""; static String N_telefono_mail_contraente_A = "";
  static String Marca_e_Tipo_A = ""; static String Targa_A = ""; static String Stato_immatricolazione_A = ""; static String Rimorchio_A = ""; static String Stato_immatricolazione2_A = "";
  static String Denominazione_A = ""; static String Numero_Polizza_A = ""; static String N_carta_verde_A = ""; static String Data_Inizio_Dal_A = ""; static String Data_Scadenza_Al_A = ""; static String Agenzia_A = ""; static String Denominazione_agenzia_A = ""; static String Indirizzo_agenzia_A = ""; static String Stato_agenzia_A = ""; static String N_tel_mail_agenzia_A = ""; static bool FLAG_danni_mat_assicurati_A = false;
  static String Cognome_cond_A = ""; static String Nome_cond_A = ""; static String Data_nascita_cond_A = ""; static String Cod_fiscale_cond_A = ""; static String Indirizzo_cond_A = ""; static String Stato_cond_A = ""; static String N_tel_mail_cond_A = ""; static String N_Patente_cond_A = ""; static String Scadenza_cond_A = ""; static String Categoria_cond_A = "";
  static List<String> puntiUrtoA_List = []; static String danni_visibili_A = ""; static String osservazioni_A = ""; static Map<int, bool> circostanzeA = {}; static int totaleCrocetteA = 0; static List<Offset?> puntiFirmaA = [];

  // --- DATI LATO B (GIALLO) ---
  static String Cognome_contraente_B = ""; static String Nome_contraente_B = ""; static String Codice_Fiscale_contraente_B = ""; static String Indirizzo_contraente_B = ""; static String CAP_contraente_B = ""; static String Stato_contraente_B = ""; static String N_telefono_mail_contraente_B = "";
  static String Marca_e_Tipo_B = ""; static String Targa_B = ""; static String Stato_immatricolazione_B = ""; static String Rimorchio_B = ""; static String Stato_immatricolazione2_B = "";
  static String Denominazione_B = ""; static String Numero_Polizza_B = ""; static String N_carta_verde_B = ""; static String Data_Inizio_Dal_B = ""; static String Data_Scadenza_Al_B = ""; static String Agenzia_B = ""; static String Denominazione_agenzia_B = ""; static String Indirizzo_agenzia_B = ""; static String Stato_agenzia_B = ""; static String N_tel_mail_agenzia_B = ""; static bool FLAG_danni_mat_assicurati_B = false;
  static String Cognome_cond_B = ""; static String Nome_cond_B = ""; static String Data_nascita_cond_B = ""; static String Cod_fiscale_cond_B = ""; static String Indirizzo_cond_B = ""; static String Stato_cond_B = ""; static String N_tel_mail_cond_B = ""; static String N_Patente_cond_B = ""; static String Scadenza_cond_B = ""; static String Categoria_cond_B = "";
  static List<String> puntiUrtoB_List = []; static String danni_visibili_B = ""; static String osservazioni_B = ""; static Map<int, bool> circostanzeB = {}; static int totaleCrocetteB = 0; static List<Offset?> puntiFirmaB = [];

  // --- DATI GRAFICI ---
  static List<dynamic> tratti = [];
  static List<dynamic> elementi = [];

  static Map<String, String> assicurazioni = {
    "AEGON": "aegon@pec.aegon.it",
    "AIG EUROPE": "insurance@aigeurope.postecert.it",
    "AIG LIFE": "aiglifestabile@pec.it",
    "ALLIANZ": "allianz.spa@pec.allianz.it",
    "ALLIANZ DIRECT": "allianzdirect@pec.allianzdirect.it",
    "ALLEANZA": "alleanza@pec.alleanza.it",
    "AMISSIMA": "amissima@pec.it",
    "AMTRUST ASSICURAZIONI": "amtrust.assicurazioni@pec.it",
    "ARAG": "arag@legalmail.it",
    "ARCA": "arcaassicurazioni@pec.unipol.it",
    "ASSICURATRICE MILANESE": "assicuratricemilanese@legalmail.it",
    "ASSIMOCO": "assimoco@legalmail.it",
    "ATHORA ITALIA": "athoraitalia@legalmail.it",
    "AVIVA": "aviva@pec.aviva.it",
    "AXA": "axaassicurazioni@axa.legalmail.it",
    "BCC ASSICURAZIONI": "bccassicurazioni@pec.it",
    "BCC VITA": "bccvita@legalmail.it",
    "BENE ASSICURAZIONI": "beneassicurazioni@legalmail.it",
    "BEREBEL": "berebel@pec.unipol.it",
    "BNP PARIBAS CARDIF": "cardif.assicurazioni@pec.bnpparibas.com",
    "CARIGE ASSICURAZIONI": "carigeassicurazioni@pec.it",
    "CATTOLICA": "cattolica.assicurazioni@pec.gruppocattolica.it",
    "CF ASSICURAZIONI": "cfassicurazioni@pec.it",
    "CHUBB": "chubb.italy@pec.chubb.com",
    "CNP VITA ASSICURA": "cnpvitaassicura@pec.it",
    "CONTE.IT": "admiralinteractive@legalmail.it",
    "CREDIT AGRICOLE": "creditagricoleassicurazioni@pec.ca-assurances.it",
    "CRONOS VITA": "cronosvita@legalmail.it",
    "DARAG ITALIA": "darag.italia@legalmail.it",
    "DAS": "das@legalmail.it",
    "DONAU": "donau@pec.it",
    "ERGO ASSICURAZIONI": "ergoassicurazioni@legalmail.it",
    "EUROHERC": "euroherc@legalmail.it",
    "EUROP ASSISTANCE": "europassistance@pec.europassistance.it",
    "FIDEURAM VITA": "fideuramvita@pec.fideuram.it",
    "GENERALI ITALIA": "generaliitalia@pec.generaligroup.com",
    "GENERTEL": "genertel@pec.genertel.it",
    "GIOTTO ASSICURAZIONI": "giottoassicurazioni@pec.it",
    "GLOBAL ASSISTANCE": "globalassistancespa@legalmail.it",
    "GREAT LAKES": "greatlakes@legalmail.it",
    "GROUPAMA": "groupama@legalmail.it",
    "HDI": "hdi.assicurazioni@pec.hdia.it",
    "HELVETIA": "helvetia@actaliscertymail.it",
    "INCONTRA ASSICURAZIONI": "incontraassicurazioni@pec.it",
    "INTESA SANPAOLO": "intesasanpaoloassicura@pec.intesasanpaolo.com",
    "INTESA SANPAOLO RBM SALUTE": "rbmsalute@pec.rbmsalute.it",
    "ITALIANA ASSICURAZIONI": "italiana@pec.italiana.it",
    "ITAS": "itas.mutua@pec-gruppoitas.it",
    "LINEAR": "linear@pec.unipol.it",
    "MAPFRE": "mapfreassicurazioni@pec.it",
    "MEDIOLANUM ASSICURAZIONI": "mediolanumassicurazioni@pec.mediolanum.it",
    "METLIFE": "metlife@pec.metlife.it",
    "NET INSURANCE": "netinsurance@legalmail.it",
    "NOBIS ASSICURAZIONI": "nobisassicurazioni@pec.it",
    "POSTE ASSICURA": "posteassicura@pec.posteassicura.it",
    "POSTE VITA": "postevita@pec.postevita.it",
    "PRIMA.IT": "prima@pec.prima.it",
    "QBE INSURANCE": "qbeitaly@pec.qbe.com",
    "QUIXA": "quixa.assicurazioni@legalmail.it",
    "REALE MUTUA": "realemutua@pec.realemutua.it",
    "SARA": "saraassicurazioni@sara.telecompost.it",
    "SOGESSUR": "sogessur@pec.it",
    "SWISS RE": "swissre@pec.swissre.com",
    "TELEPASS ASSICURA": "telepassassicura@pec.telepass.com",
    "TOKIO MARINE EUROPE": "tokiomareineeurope@legalmail.it",
    "TUA": "tuaassicurazioni@pec.it",
    "UNIQA": "uniqa@pec.uniqa.it",
    "UNIPOLSAI": "unipolsaiassicurazioni@pec.unipol.it",
    "VERTI": "verti@pec.verti.it",
    "VIENNA INSURANCE (WIENER)": "wieneritalia@legalmail.it",
    "VITTORIA": "vittoriaassicurazioni@pec.vittoriaassicurazioni.it",
    "WAKAM": "wakam@pec.it",
    "XL INSURANCE": "xlinsurance@legalmail.it",
    "ZURICH": "zurich.insurance.company@pec.zurich.it",
    "ALTRO (Inserimento manuale)": ""
  };

  // --- RESET TOTALE ---
  static void reset() {
    latoCorrente = 'A';
    data_incidente = ""; ora = ""; luogo = ""; testimoni = ""; feriti = false;
    Veicoli_danni_materiali_oltre = false; Oggetti_diversi_danni_materiali = false;
    resetA();
    resetB();
    elementi = []; tratti = [];
    idSessione = null; chiaveSegretaCorrente = null; idScambioTemporaneo = null;
  }

  // --- RESET PARZIALE ---
  static void resetSoloLatoOpposto() {
    if (latoCorrente == 'A') {
      resetB();
    } else {
      resetA();
    }
    idScambioTemporaneo = null;
    chiaveSegretaCorrente = null;
  }

  static void resetA() {
    Cognome_contraente_A = ""; Nome_contraente_A = ""; Codice_Fiscale_contraente_A = ""; Indirizzo_contraente_A = ""; CAP_contraente_A = ""; Stato_contraente_A = ""; N_telefono_mail_contraente_A = "";
    Marca_e_Tipo_A = ""; Targa_A = ""; Stato_immatricolazione_A = ""; Rimorchio_A = ""; Stato_immatricolazione2_A = "";
    Denominazione_A = ""; Numero_Polizza_A = ""; N_carta_verde_A = ""; Data_Inizio_Dal_A = ""; Data_Scadenza_Al_A = ""; Agenzia_A = ""; Denominazione_agenzia_A = ""; Indirizzo_agenzia_A = ""; Stato_agenzia_A = ""; N_tel_mail_agenzia_A = ""; FLAG_danni_mat_assicurati_A = false;
    Cognome_cond_A = ""; Nome_cond_A = ""; Data_nascita_cond_A = ""; Cod_fiscale_cond_A = ""; Indirizzo_cond_A = ""; Stato_cond_A = ""; N_tel_mail_cond_A = ""; N_Patente_cond_A = ""; Scadenza_cond_A = ""; Categoria_cond_A = "";
    puntiUrtoA_List = []; danni_visibili_A = ""; osservazioni_A = ""; circostanzeA = {}; totaleCrocetteA = 0; puntiFirmaA = [];
  }

  static void resetB() {
    Cognome_contraente_B = ""; Nome_contraente_B = ""; Codice_Fiscale_contraente_B = ""; Indirizzo_contraente_B = ""; CAP_contraente_B = ""; Stato_contraente_B = ""; N_telefono_mail_contraente_B = "";
    Marca_e_Tipo_B = ""; Targa_B = ""; Stato_immatricolazione_B = ""; Rimorchio_B = ""; Stato_immatricolazione2_B = "";
    Denominazione_B = ""; Numero_Polizza_B = ""; N_carta_verde_B = ""; Data_Inizio_Dal_B = ""; Data_Scadenza_Al_B = ""; Agenzia_B = ""; Denominazione_agenzia_B = ""; Indirizzo_agenzia_B = ""; Stato_agenzia_B = ""; N_tel_mail_agenzia_B = ""; FLAG_danni_mat_assicurati_B = false;
    Cognome_cond_B = ""; Nome_cond_B = ""; Data_nascita_cond_B = ""; Cod_fiscale_cond_B = ""; Indirizzo_cond_B = ""; Stato_cond_B = ""; N_tel_mail_cond_B = ""; N_Patente_cond_B = ""; Scadenza_cond_B = ""; Categoria_cond_B = "";
    puntiUrtoB_List = []; danni_visibili_B = ""; osservazioni_B = ""; circostanzeB = {}; totaleCrocetteB = 0; puntiFirmaB = [];
  }

  // --- DEBUG COMPLETO (Tutti i campi popolati) ---
  static void popolaDatiDiTest() {
    idScambioTemporaneo = null;

    // Header
    data_incidente = "01/01/2024"; ora = "12:30"; luogo = "ROMA, VIA DEL CORSO 10"; testimoni = "SIG. BIANCHI GIOVANNI, VIA VERDI 5, MILANO";
    feriti = false; Veicoli_danni_materiali_oltre = false; Oggetti_diversi_danni_materiali = true;

    if (latoCorrente == 'A') {
      // Dati A
      Cognome_contraente_A = "ROSSI"; Nome_contraente_A = "MARIO"; Codice_Fiscale_contraente_A = "RSSMRA80A01H501U"; Indirizzo_contraente_A = "VIA ROMA 1"; CAP_contraente_A = "00100"; Stato_contraente_A = "ITALIA"; N_telefono_mail_contraente_A = "333.1234567";
      Marca_e_Tipo_A = "FIAT PANDA"; Targa_A = "AA123AA"; Stato_immatricolazione_A = "IT"; Rimorchio_A = ""; Stato_immatricolazione2_A = "";
      Denominazione_A = "GENERALI"; Numero_Polizza_A = "123456"; N_carta_verde_A = "CV-001"; Data_Inizio_Dal_A = "01/01/2023"; Data_Scadenza_Al_A = "01/01/2024";
      Agenzia_A = "ROMA"; Denominazione_agenzia_A = "AG. CENTRALE"; Indirizzo_agenzia_A = "VIA PO 20"; Stato_agenzia_A = "IT"; N_tel_mail_agenzia_A = "ag@mail.it"; FLAG_danni_mat_assicurati_A = true;
      Cognome_cond_A = "ROSSI"; Nome_cond_A = "MARIO"; Data_nascita_cond_A = "01/01/1980"; Cod_fiscale_cond_A = "RSSMRA80"; Indirizzo_cond_A = "VIA ROMA 1"; Stato_cond_A = "IT"; N_tel_mail_cond_A = "333.1234567";
      N_Patente_cond_A = "PAT-001"; Scadenza_cond_A = "01/01/2030"; Categoria_cond_A = "B";
      puntiUrtoA_List = ["Anteriore"]; danni_visibili_A = "PARAURTI ROTTO"; osservazioni_A = "RAGIONE PIENA"; circostanzeA = {1:true};
      puntiFirmaA = [const Offset(0,0), const Offset(10,10)];
      tratti = [TrattoPenna([const Offset(10,10), const Offset(100,100)], tipo: 'penna')];
      resetB();
    } else {
      // Dati B
      Cognome_contraente_B = "VERDI"; Nome_contraente_B = "LUIGI"; Codice_Fiscale_contraente_B = "VRDLGU90B02F205Z"; Indirizzo_contraente_B = "MILANO"; CAP_contraente_B = "20100"; Stato_contraente_B = "ITALIA"; N_telefono_mail_contraente_B = "340.9876543";
      Marca_e_Tipo_B = "FORD FIESTA"; Targa_B = "BB987BB"; Stato_immatricolazione_B = "IT"; Rimorchio_B = ""; Stato_immatricolazione2_B = "";
      Denominazione_B = "ALLIANZ"; Numero_Polizza_B = "987654"; N_carta_verde_B = "CV-002"; Data_Inizio_Dal_B = "01/01/2023"; Data_Scadenza_Al_B = "01/01/2024";
      Agenzia_B = "MILANO"; Denominazione_agenzia_B = "AG. NORD"; Indirizzo_agenzia_B = "VIA DANTE 1"; Stato_agenzia_B = "IT"; N_tel_mail_agenzia_B = "mi@mail.it"; FLAG_danni_mat_assicurati_B = false;
      Cognome_cond_B = "VERDI"; Nome_cond_B = "LUIGI"; Data_nascita_cond_B = "02/02/1990"; Cod_fiscale_cond_B = "VRDLGU90"; Indirizzo_cond_B = "MILANO"; Stato_cond_B = "IT"; N_tel_mail_cond_B = "340.9876543";
      N_Patente_cond_B = "PAT-002"; Scadenza_cond_B = "02/02/2030"; Categoria_cond_B = "B";
      puntiUrtoB_List = ["Posteriore"]; danni_visibili_B = "PARAURTI POST ROTTO"; osservazioni_B = "NON HO VISTO"; circostanzeB = {12:true};
      puntiFirmaB = [const Offset(0,0), const Offset(10,10)];
      resetA();
    }
  }
}