sync_orchestrator.dart 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. typedef SyncProgressCallback = void Function(String message, double progress);
  2. class SyncOrchestrator {
  3. final SyncProgressCallback onProgress;
  4. SyncOrchestrator({required this.onProgress});
  5. Future<void> executeFullSync() async {
  6. onProgress('Avvio sincronizzazione...', 0.0);
  7. // Step 1-5: Upload new data
  8. await _syncStep('Verifica agente...', 0.05, _syncAgente);
  9. await _syncStep('Invio nuovi clienti...', 0.10, _syncClientiUpload);
  10. await _syncStep('Scarico clienti attivi...', 0.15, _syncClientiAttivi);
  11. await _syncStep('Invio nuove destinazioni...', 0.20, _syncDestinazioni);
  12. await _syncStep('Invio nuovi ordini...', 0.25, _syncOrdini);
  13. // Step 6: Download reference data
  14. await _syncStep('Scarico tabelle...', 0.35, _syncTabelle);
  15. await _syncStep('Scarico pagamenti...', 0.40, _syncPagamenti);
  16. await _syncStep('Scarico sconti...', 0.45, _syncSconti);
  17. await _syncStep('Scarico articoli...', 0.50, _syncArticoli);
  18. await _syncStep('Scarico listini...', 0.55, _syncListini);
  19. await _syncStep('Scarico listini articolo...', 0.60, _syncListiniArticolo);
  20. // Step 7-9: Agent-specific downloads
  21. await _syncStep('Scarico scadenze...', 0.65, _syncScadenze);
  22. await _syncStep('Scarico listini cliente...', 0.70, _syncListiniCliente);
  23. await _syncStep('Scarico sconti cliente...', 0.75, _syncScontiCliente);
  24. // Step 10-13: Complete
  25. await _syncStep('Scarico promozioni...', 0.80, _syncPromozioni);
  26. await _syncStep('Scarico ordini remoti...', 0.85, _syncOrdiniDownload);
  27. await _syncStep('Scarico statistiche...', 0.90, _syncStatistiche);
  28. await _syncStep('Verifica parametri...', 0.95, _syncParametri);
  29. onProgress('Sincronizzazione completata!', 1.0);
  30. }
  31. Future<void> _syncStep(String msg, double progress, Future<void> Function() action) async {
  32. onProgress(msg, progress);
  33. try {
  34. await action();
  35. } catch (e) {
  36. onProgress('$msg (errore: $e)', progress);
  37. }
  38. }
  39. Future<void> _syncAgente() async { }
  40. Future<void> _syncClientiUpload() async { }
  41. Future<void> _syncClientiAttivi() async { }
  42. Future<void> _syncDestinazioni() async { }
  43. Future<void> _syncOrdini() async { }
  44. Future<void> _syncTabelle() async { }
  45. Future<void> _syncPagamenti() async { }
  46. Future<void> _syncSconti() async { }
  47. Future<void> _syncArticoli() async { }
  48. Future<void> _syncListini() async { }
  49. Future<void> _syncListiniArticolo() async { }
  50. Future<void> _syncScadenze() async { }
  51. Future<void> _syncListiniCliente() async { }
  52. Future<void> _syncScontiCliente() async { }
  53. Future<void> _syncPromozioni() async { }
  54. Future<void> _syncOrdiniDownload() async { }
  55. Future<void> _syncStatistiche() async { }
  56. Future<void> _syncParametri() async { }
  57. }