# Implementazione Gestione Scadenzario Formazione Sicurezza ## Obiettivo Configurare il flusso per la gestione dello scadenzario della formazione sicurezza, accentrando dati e scadenze, abbandonando file Excel disconnessi. ## Strategia Mapping delle funzionalità sui moduli esistenti: 1. **Anagrafica Corsi** -> Modulo **Magazzino** (`Articolo`) 2. **Anagrafica Soggetti** -> Modulo **Clienti** (`Cliente` + nuova entità `ClienteContatto`) 3. **Gestione Attestati e Scadenze** -> Nuovo Modulo **Safety** (o estensione Eventi/Qualità) 4. **Workflow Notifiche** -> Human-in-the-loop tramite Dashboard dedicato. ## Piano di Lavoro ### 1. Documentazione e Analisi - [ ] Creazione piano di lavoro (questo file). - [ ] Aggiornamento `ZENTRAL.md`. ### 2. Backend (.NET) #### Domain Layer - [ ] **Modifica Entity `Articolo`**: - Aggiungere `int? DurataValiditaAnni` (Validità del corso). - Aggiungere `bool IsCorsoFormazione` (Flag identificativo). - [ ] **Nuova Entity `ClienteContatto`**: - Proprietà: `Nome`, `Cognome`, `Email`, `Ruolo`, `Telefono`, foreign key a `Cliente`. - Aggiornare `Cliente` con collection `Contatti`. - [ ] **Nuova Entity `TrainingRecord` (Safety)**: - Proprietà: `ClienteContattoId`, `ArticoloId` (Corso), `DataEsecuzione`, `DataScadenza` (Calcolata), `AttestatoUrl`, `Stato` (Valid, Expiring, Expired). - Note e audit log. #### Infrastructure / EF Core - [ ] Creare Migrazione EF per le nuove entità e modifiche. - [ ] Aggiornare `ApplicationDbContext`. #### API Layer - [ ] **Aggiornare `ArticoliController`**: Gestione nuovi campi. - [ ] **Aggiornare `ClientiController`**: Gestione CRUD Contatti. - [ ] **Nuovo `TrainingController`**: - CRUD TrainingRecords. - Upload file attestato. - Endpoint `GetExpiringTrainings` per la dashboard (filtri per data, azienda). - Endpoint `approve-notification`: Utilizza il nuovo servizio `IEmailSender` per inviare le notifiche. ### 3. Frontend (React) #### Modulo Safety (Nuova App `safety`) - [ ] **Setup Modulo**: Creare cartella `src/frontend/src/apps/safety` e configurare route. - [ ] **Componenti**: - `SafetyDashboard`: Widget con scadenze imminenti e scadute. - `CourseRegistry`: Tabella corsi (Articoli filtrati). - `TrainingMatrix`: Vista lavoratori x corsi o lista formazioni. - `TrainingForm`: Modale inserimento/modifica formazione (Caricamento file, calcolo automatico scadenza). #### Integrazione Moduli Esistenti - [ ] **Magazzino**: Aggiungere campi Validità nel form Articolo. - [ ] **Clienti**: Aggiungere Tab "Contatti" nel dettaglio Cliente per gestire i lavoratori. ### 4. Workflow e Notifiche - [ ] Implementare logica "Human-in-the-loop": Liste "Da Inviare" nella Dashboard. - [ ] Integrazione con il **Modulo Email Standard**: Chiamata al servizio di invio email reale. ### 5. Verifica e Test - [ ] Test flusso completo: Creazione Corso -> Creazione Lavoratore -> Registrazione Formazione -> Verifica Scadenza -> Notifica. ## Stato Attuale - Inizio analisi e setup.