# Live Data Alignment for Report Designer ## Obiettivo Garantire che i dataset utilizzati nel report designer siano sempre automaticamente allineati con le strutture dati vive del gestionale, leggendo le strutture live invece di affidarsi a dati pre-configurati. ## Modifiche Apportate ### Backend 1. **Nuovo Servizio `SchemaDiscoveryService`**: * Creato un servizio che scansiona `ZentralDbContext` per trovare tutti i `DbSet` disponibili. * Genera dinamicamente gli schemi dei dati basandosi sulle proprietà delle entità. * Supporta il caricamento dinamico delle entità con eager loading delle proprietà di navigazione. * Include un dizionario di metadati per mantenere descrizioni e icone curate per i dataset principali (Evento, Cliente, ecc.), pur supportando nuovi dataset automaticamente. 2. **Refactoring `ReportsController`**: * Rimossi i metodi statici hardcoded per la generazione degli schemi (`GetEventoSchema`, ecc.). * Rimossa la lista hardcoded dei dataset disponibili. * Integrato `SchemaDiscoveryService` per ottenere la lista dei dataset, gli schemi e i dati. * Aggiornato `GetVirtualDatasetEntities` per usare il servizio di discovery. ### Miglioramenti UX 1. **Etichette Leggibili**: * Aggiornato `SchemaDiscoveryService` per rilevare automaticamente la proprietà migliore da usare come etichetta (RagioneSociale, Nome, Descrizione, ecc.). * Implementato ordinamento alfabetico automatico basato sull'etichetta rilevata. 3. **Refactoring `VirtualDatasetsController`**: * Rimosso il metodo hardcoded `GetBaseDatasetSchema`. * Integrato `SchemaDiscoveryService` per la validazione e la generazione degli schemi dei dataset virtuali. * Risolto un TODO per la determinazione automatica del tipo di campo negli schemi virtuali. 4. **Registrazione Servizio**: * Registrato `SchemaDiscoveryService` in `Program.cs`. ## Risultato Il Report Designer ora riflette automaticamente qualsiasi modifica al modello dati (nuove entità, nuovi campi) senza richiedere modifiche manuali al codice del controller. I dataset "core" mantengono le loro descrizioni user-friendly, mentre i nuovi dataset vengono esposti con nomi e descrizioni generati automaticamente.