Beispiel #1
0
        public SyncDataViewModel()
        {
            try
            {
                _attachmentSourceFolder = Path.Combine(Settings.MobileFolder, "Attachments");
                _attachmentOutFolder    = Settings.AttachmentSyncFolder;

                DateTime lastDownload = DataFileTracker.ReadLastDownloadSyncDate();
                TimeSpan period       = TimeSpan.FromMinutes(int.Parse(Settings.SyncFrequency));


                Task.Run(() => ContinousSyncAsync(period));

                if (DateTime.Now.Date > lastDownload.Date)
                {
                    Task.Run(DailyDeltaSyncAsync);
                }
                else
                {
                    _initialDownloadComplete = true;
                }
            }
            catch (Exception e)
            {
                //Cannot log here because Log import not available
                _startupErrorOccured = true;
                _startupException    = e;
            }
        }
Beispiel #2
0
        public async void ExecuteManualSync()
        {
            try
            {
                Log.Debug("Manual Sync Started");
                if (_isSynching)
                {
                    Log.Debug("Already in sync process, skipping manual sync");
                }

                _isSynching = true;

                //EventAggregator.GetEvent<NotifyEvent>().Publish(new NotifyEventArgs("Manual Sync Started"));

                using (var gdbMonitor = await GeodatabaseMonitor.CreateAsync(Log, EventAggregator, false))
                {
                    await SyncDataAsync(gdbMonitor.BidirectionalGeodatabases, SyncDirection.Upload);
                    await SyncDataAsync(gdbMonitor.BidirectionalGeodatabases, SyncDirection.Download);
                }

                _isSynching = false;

                await DeltasSyncAsync();

                DataFileTracker.UpdateLastDownloadSyncDate();

                Log.Debug("Manual Sync Completed");

                //EventAggregator.GetEvent<TableChangedEvent>().Publish(TableChangedEventArgs.Empty);
            }
            catch (Exception e)
            {
                Log.Error("Something went wrong....", e);
            }
        }
Beispiel #3
0
        private async Task <IEnumerable <string> > GetDeltaFileNamesAsync()
        {
            DateTime lastDownload = DataFileTracker.ReadLastDownloadSyncDate();
            string   dateQuery    = $"{lastDownload.Year}{lastDownload.Month:00}{lastDownload.Day:00}";
            string   downloadUrl  = $"{Constants.Settings.WebApiUrl}/api/deltas/{dateQuery}?f=json";

            HttpClient client = new HttpClient();
            string     json   = await client.GetStringAsync(downloadUrl);

            var jObject = (JObject)JsonConvert.DeserializeObject(json);
            var array   = (JArray)jObject["files"];

            var filenames = array.Select(s => s.ToString()).ToArray();

            Log.Debug($"Found {filenames.Length} requiring download");

            return(filenames);
        }