typedef SyncProgressCallback = void Function(String message, double progress); class SyncOrchestrator { final SyncProgressCallback onProgress; SyncOrchestrator({required this.onProgress}); Future executeFullSync() async { onProgress('Avvio sincronizzazione...', 0.0); // Step 1-5: Upload new data await _syncStep('Verifica agente...', 0.05, _syncAgente); await _syncStep('Invio nuovi clienti...', 0.10, _syncClientiUpload); await _syncStep('Scarico clienti attivi...', 0.15, _syncClientiAttivi); await _syncStep('Invio nuove destinazioni...', 0.20, _syncDestinazioni); await _syncStep('Invio nuovi ordini...', 0.25, _syncOrdini); // Step 6: Download reference data await _syncStep('Scarico tabelle...', 0.35, _syncTabelle); await _syncStep('Scarico pagamenti...', 0.40, _syncPagamenti); await _syncStep('Scarico sconti...', 0.45, _syncSconti); await _syncStep('Scarico articoli...', 0.50, _syncArticoli); await _syncStep('Scarico listini...', 0.55, _syncListini); await _syncStep('Scarico listini articolo...', 0.60, _syncListiniArticolo); // Step 7-9: Agent-specific downloads await _syncStep('Scarico scadenze...', 0.65, _syncScadenze); await _syncStep('Scarico listini cliente...', 0.70, _syncListiniCliente); await _syncStep('Scarico sconti cliente...', 0.75, _syncScontiCliente); // Step 10-13: Complete await _syncStep('Scarico promozioni...', 0.80, _syncPromozioni); await _syncStep('Scarico ordini remoti...', 0.85, _syncOrdiniDownload); await _syncStep('Scarico statistiche...', 0.90, _syncStatistiche); await _syncStep('Verifica parametri...', 0.95, _syncParametri); onProgress('Sincronizzazione completata!', 1.0); } Future _syncStep(String msg, double progress, Future Function() action) async { onProgress(msg, progress); try { await action(); } catch (e) { onProgress('$msg (errore: $e)', progress); } } Future _syncAgente() async { } Future _syncClientiUpload() async { } Future _syncClientiAttivi() async { } Future _syncDestinazioni() async { } Future _syncOrdini() async { } Future _syncTabelle() async { } Future _syncPagamenti() async { } Future _syncSconti() async { } Future _syncArticoli() async { } Future _syncListini() async { } Future _syncListiniArticolo() async { } Future _syncScadenze() async { } Future _syncListiniCliente() async { } Future _syncScontiCliente() async { } Future _syncPromozioni() async { } Future _syncOrdiniDownload() async { } Future _syncStatistiche() async { } Future _syncParametri() async { } }