feat: implement training notification management and new training pages

This commit is contained in:
2025-12-13 23:51:03 +01:00
parent 99ce5e1e6a
commit 34f954f494
21 changed files with 6125 additions and 4 deletions

View File

@@ -0,0 +1,42 @@
# Implementazione Modulo Formazione Obbligatoria (Mandatory Training)
## Stato: Completato
Ho completato l'implementazione del modulo Formazione Obbligatoria seguendo le specifiche definite in `2025-12-13-164500_mandatory_training_specs.md`.
## Modifiche Apportate
### Backend
1. **Entities**:
- Creata `TrainingNotification` in `Zentral.Domain` per gestire la coda di notifiche.
- Aggiornato `ZentralDbContext` (DbSet).
- Creata migrazione `AddTrainingNotifications`.
2. **Services**:
- Creato `TrainingNotificationService`:
- Logica `GenerateNotificationsAsync`: raggruppa scadenze per Cliente, crea notifiche `Pending`.
- Logica `SendApprovedNotificationsAsync`: invia email per notifiche `Approved`.
- Generazione corpo email HTML con tabella riepilogativa.
- Registrato servizio in `Program.cs`.
3. **Controllers**:
- Creato `TrainingNotificationsController`:
- Endpoints per Listing, Generazione, Approvazione, Modifica e Invio.
- Aggiornato `AppService` (verifica esistenza modulo, usato nei service).
### Frontend
1. **Pagine Nuove (App Training)**:
- `TrainingDeadlinesPage`: Scadenzario tabellare con indicatori di stato.
- `NotificationCenterPage`: Gestione coda notifiche (Approvazione/Modifica/Invio).
- `WorkersRegistryPage`: Registro lavoratori con stato formativo aggregato.
- `DataExchangePage`: Placeholder per Import/Export.
2. **Navigazione**:
- Aggiornato `Sidebar.tsx` con le nuove voci di menu sotto "Formazione" ("Lavoratori", "Scadenze", "Notifiche", "Import/Export").
- Aggiornato `routes.tsx` con le relative rotte.
## Note per il Testing
- Per testare le notifiche:
1. Andare in "Notifiche".
2. Cliccare "Genera".
3. Verificare la creazione di notifiche per le aziende con scadenze.
4. Approvare una notifica.
5. Cliccare "Invia Approvate".
- Assicurarsi che il modulo "Comunicazioni" sia attivo e configurato (SMTP).