/// <summary>
 /// Display the eventual database download errors or switch to the database selection view
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private void DatabaseDownloadEndedHandler(object sender, DatabaseDownloadEndedEventArgs args)
 {
     syncService.DatabaseDownloadEnded -= DatabaseDownloadEndedHandler;
     SyncInProgress = false;
     Error          = args.Error;
     if (args.Result)
     {
         Application.Current.Dispatcher.Invoke(() => OpenDatabaseSelectionView(databasePath));
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Database download ended event handler, move to the next phase if it was a success
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void DatabaseDownloadEndedHandler(object sender, DatabaseDownloadEndedEventArgs args)
        {
            syncService.DatabaseDownloadEnded -= DatabaseDownloadEndedHandler;

            Error = args.Error;
            if (!args.Result)
            {
                SyncInProgress        = false;
                DownloadSyncStepState = SyncStepStates.Failed;
                return;
            }

            var incomingDatabase = databaseRepository.GetDatabase(args.Path);

            if (incomingDatabase is null)
            {
                Error                 = "CorruptedSyncDatabase";
                SyncInProgress        = false;
                DownloadSyncStepState = SyncStepStates.Failed;
                return;
            }

            DownloadSyncStepState = SyncStepStates.Done;

            if (databaseRepository.GetDatabase().SyncData.LastSync == DateTime.MinValue || incomingDatabase.SyncData.LastSync > databaseRepository.GetDatabase().SyncData.LastSync)
            {
                syncService.DatabasesMerged += DatabasesMergedHandler;
                syncService.MergeDatabases(databaseRepository.GetDatabase(), incomingDatabase);
                MergeSyncStepState = SyncStepStates.InProgress;
            }
            else if (databaseRepository.GetDatabase().SyncData.LastSync != incomingDatabase.SyncData.LastSync)
            {
                // Just upload because only local changes
                syncService.DatabaseUploadEnded += DatabaseUploadEndedHandler;
                syncService.UploadDatabase(Username, Password, settingsService.GetDatabasePath());
                MergeSyncStepState  = SyncStepStates.Skipped;
                UploadSyncStepState = SyncStepStates.InProgress;
            }
            else
            {
                Error               = "DatabaseAlreadyUpToDate";
                SyncInProgress      = false;
                MergeSyncStepState  = SyncStepStates.Skipped;
                UploadSyncStepState = SyncStepStates.Skipped;
            }

            File.Delete(args.Path);
        }