# GestoreTrimestrale - Architettura e Evoluzione

## Versioni del Sistema

### 1. Versione Originale (GestoreTrimestrale)

#### Caratteristiche Tecniche

- Framework: .NET 4.5
- Pattern: WPF tradizionale con code-behind
- Struttura: Monolitica
- File principale: MainWindow.xaml.cs (~32KB)

#### Componenti Principali

- Controls (2 controlli base)
- Gestione configurazione tramite configModel.cs
- Logica business integrata nel code-behind
- Sistema di logging con NLog

### 2. Versione MVVM (GestoreTrimestrale_branch_applyingMVVM)

#### Miglioramenti Tecnici

- Aggiornamento a .NET Framework 4.8
- Implementazione pattern MVVM completo
- Architettura modulare e scalabile

#### Nuova Struttura

- **Models/**
  - ConfigurationModel.cs
  - Logica di business separata
- **ViewModels/**
  - Logica di presentazione
  - Binding dati
- **Views/Controls/** (33 controlli specializzati)
- **Commands/** per pattern Command
- **Converters/** per trasformazione dati

#### Componenti Aggiuntivi

- UserStatusWindow per gestione stato utente
- WorkflowWindow per flussi di lavoro
- Sistema di template XML potenziato

## GestoreTrimestrale.Logic

### Componenti Principali

#### 1. FtpManagerProcess

- Gestisce il trasferimento FTP dei file
- Utilizza BackgroundWorker per operazioni asincrone
- Gestisce parametri di ambiente e configurazione TNG

#### 2. PdfManagerProcess

- Gestisce la generazione parallela di PDF
- Supporta processi concorrenti multipli
- Controlla il numero di processi PDF attivi
- Gestisce lo stato di elaborazione attraverso ManagerProcessStatusEnum

#### 3. ZipManagerProcess

- Gestisce la compressione dei file
- Utilizza SmartZip.Logic per le operazioni di compressione
- Supporta:
  - Elaborazione iterativa
  - Configurazione intervalli di esecuzione
  - Logging degli errori
  - Gestione di pacchetti ZIP personalizzati
  - Supporto per approvazioni e scenari diversi

### Caratteristiche Chiave

1. **Separazione della Logica**

   - Layer separato per la logica di business
   - Indipendente dall'interfaccia utente
   - Riutilizzabile in diversi contesti

2. **Gestione Asincrona**

   - Uso di BackgroundWorker e Thread
   - Supporto per operazioni parallele
   - Monitoraggio dello stato dei processi

3. **Configurabilità**

   - Supporto per configurazioni XML
   - Parametri personalizzabili
   - Gestione di scenari diversi

4. **Integrazione**

   - Progetto condiviso tra GestoreTrimestrale e GestoreTrimestrale_branch_applyingMVVM
   - Referenziato come progetto separato in entrambe le versioni
   - Garantisce consistenza della logica di business tra le implementazioni
   - Permette la migrazione graduale mantenendo le funzionalità core

## Confronto Architetturale

### Vantaggi Versione MVVM

1. **Manutenibilità**
   - Separazione chiara delle responsabilità
   - Codice più organizzato e modulare
   - Facilità di modifica e aggiornamento

2. **Testabilità**
   - Componenti isolati e testabili
   - Suite di test automatizzati
   - Migliore qualità del codice

3. **Scalabilità**
   - Facilità di aggiungere nuove funzionalità
   - Struttura più flessibile
   - Migliore gestione della complessità

### Considerazioni di Migrazione

- Refactoring completo dell'architettura
- Mantenimento delle funzionalità esistenti
- Miglioramento dell'esperienza utente
- Aggiornamento tecnologico significativo

## Integrazione nel Sistema

- Parte del sistema ContrattoSEI
- Gestione report trimestrali
- Elaborazione dati finanziari
- Generazione documentazione automatizzata