private void ExecuteSave() { Task.Run(() => { Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage { IsBusy = true, Message = "Saving..." }); try { Settings settings = TagDataProvider.GetDefaultSettings(); if (settings != null) { settings.Antennas.TxPowerMax = false; settings.Antennas.RxSensitivityMax = false; settings.HoldReportsOnDisconnect = false; settings.Report.Mode = ReportMode.Individual; //settings.AutoStart.Mode = AutoStartMode.None; settings.SearchMode = SearchMode.DualTarget; settings.ReaderMode = ReaderMode.AutoSetStaticDRM; settings.Report.IncludeFirstSeenTime = true; settings.Report.IncludeLastSeenTime = true; settings.Report.IncludeSeenCount = true; settings.Keepalives.Enabled = true; settings.Keepalives.EnableLinkMonitorMode = true; settings.Keepalives.LinkDownThreshold = 5; settings.Keepalives.PeriodInMs = 3000; settings.Antennas.GetAntenna(1).RxSensitivityInDbm = (double)_antenna1ReceivePower; settings.Antennas.GetAntenna(1).TxPowerInDbm = (double)_antenna1TransmitPower; settings.Antennas.GetAntenna(2).RxSensitivityInDbm = (double)_antenna2ReceivePower; settings.Antennas.GetAntenna(2).TxPowerInDbm = (double)_antenna2TransmitPower; settings.Antennas.GetAntenna(3).RxSensitivityInDbm = (double)_antenna3ReceivePower; settings.Antennas.GetAntenna(3).TxPowerInDbm = (double)_antenna3TransmitPower; settings.Antennas.GetAntenna(4).RxSensitivityInDbm = (double)_antenna4ReceivePower; settings.Antennas.GetAntenna(4).TxPowerInDbm = (double)_antenna4TransmitPower; TagDataProvider.ApplySettings(settings); Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage { IsBusy = true, Message = "Settings saved." }); System.Threading.Thread.Sleep(3000); } else { Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage { IsBusy = true, Message = "Unable to save reader settings. Reader disconnected?" }); System.Threading.Thread.Sleep(3000); } bool portChanged = false; using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork()) { var repo = dp.SettingsRepository; var setting = repo.FindSingle(x => x.Key == TruckClientSettingKeys.RFID_READ_DELAY); if (setting != null) { setting.Value = RFIDReadDelay.ToString(); AggregateDataProvider.UpdateReadDelay(RFIDReadDelay); } var portSetting = repo.FindSingle(x => x.Key == TruckClientSettingKeys.GPS_COM_PORT); if (portSetting != null) { if (PortName != "-- Select One --") { if (portSetting.Value != PortName) { portChanged = true; } portSetting.Value = PortName; } } else //Add Port setting { portSetting = new Setting(); portSetting.Value = PortName; portSetting.Key = TruckClientSettingKeys.GPS_COM_PORT; dp.SettingsRepository.Add(portSetting); portChanged = true; } dp.SaveChanges(); } if (portChanged) { System.Windows.Application.Current.Dispatcher.Invoke((Action)(() => { System.Windows.MessageBox.Show("Please close and restart the application for new GPS settings to take effect"); })); } } catch (Exception exc) { System.Windows.Application.Current.Dispatcher.Invoke((Action)(() => { System.Windows.MessageBox.Show("An error occurred saving settings to reader. " + exc.Message); })); Logging.Logger.Log(exc); } finally { Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage { IsBusy = false, Message = "" }); } }); }
private void ExecuteSave() { Task.Run(async() => { string key = ""; string endpoint = ""; bool shutDown = false; using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork()) { var documentDbSetting = dp.SettingsRepository.FindSingle(x => x.Key == TruckClientSettingKeys.DOCUMENT_DB_KEY); var endpointSetting = dp.SettingsRepository.FindSingle(x => x.Key == TruckClientSettingKeys.DOCUMENTDB_ENDPOINT); if (documentDbSetting != null) { key = documentDbSetting.Value; } if (endpointSetting != null) { endpoint = endpointSetting.Value; } if (string.IsNullOrWhiteSpace(key) || string.IsNullOrWhiteSpace(endpoint)) { shutDown = true; } } if (string.IsNullOrWhiteSpace(_documentDbConnection)) { ShowErrorMessage = true; ErrorMessage = "Document db key is required."; } else if (string.IsNullOrWhiteSpace(_documentDbEndpoint)) { ShowErrorMessage = true; ErrorMessage = "Document db endpoint is required."; } else { ErrorMessage = ""; ShowErrorMessage = false; Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage { IsBusy = true, Message = "Saving..." }); using (var dp = SimpleIoc.Default.GetInstance <IUnitOfWorkFactory>().CreateUnitOfWork()) { var documentDbEndpointSetting = dp.SettingsRepository.FindSingle(x => x.Key == TruckClientSettingKeys.DOCUMENTDB_ENDPOINT); var documentDbKeySetting = dp.SettingsRepository.FindSingle(x => x.Key == TruckClientSettingKeys.DOCUMENT_DB_KEY); var syncIntervalSetting = dp.SettingsRepository.FindSingle(x => x.Key == TruckClientSettingKeys.DATA_SYNC_INTERVAL); var localTrucks = dp.TruckRepository.GetAll(); var localDrivers = dp.DriverRepository.GetAll(); if (documentDbKeySetting != null) { documentDbKeySetting.Value = _documentDbConnection; } else { documentDbKeySetting = new Setting(); documentDbKeySetting.Key = TruckClientSettingKeys.DOCUMENT_DB_KEY; documentDbKeySetting.Value = _documentDbConnection; dp.SettingsRepository.Add(documentDbKeySetting); } if (documentDbEndpointSetting != null) { documentDbEndpointSetting.Value = _documentDbEndpoint; } else { documentDbEndpointSetting = new Setting(); documentDbEndpointSetting.Key = TruckClientSettingKeys.DOCUMENTDB_ENDPOINT; documentDbEndpointSetting.Value = _documentDbEndpoint; dp.SettingsRepository.Add(documentDbEndpointSetting); } if (syncIntervalSetting != null) { syncIntervalSetting.Value = _dataSyncInterval.ToString(); } else { syncIntervalSetting = new Setting(); syncIntervalSetting.Key = TruckClientSettingKeys.DATA_SYNC_INTERVAL; syncIntervalSetting.Value = _dataSyncInterval.ToString(); dp.SettingsRepository.Add(syncIntervalSetting); } AggregateDataProvider.UpdateReadDelay(_dataSyncInterval); dp.SaveChanges(); try { var currentTruck = dp.SettingsRepository.GetCurrentTruck(); var currentDriver = dp.SettingsRepository.GetCurrentDriver(); if (currentDriver == null || currentTruck == null) //if no truck or driver set try to pull down from cloud and set a truck/driver { CottonDBMS.Cloud.DocumentDBContext.Initialize(_documentDbEndpoint, _documentDbConnection); var trucks = await DocumentDBContext.GetAllItemsAsync <TruckEntity>(p => p.EntityType == EntityType.TRUCK); var drivers = await DocumentDBContext.GetAllItemsAsync <DriverEntity>(p => p.EntityType == EntityType.DRIVER); if (localTrucks.Count() == 0) { foreach (var t in trucks) { dp.TruckRepository.Add(t); } } if (localDrivers.Count() == 0) { foreach (var d in drivers) { dp.DriverRepository.Add(d); } } dp.SaveChanges(); localTrucks = dp.TruckRepository.GetAll(); localDrivers = dp.DriverRepository.GetAll(); if (localTrucks.Count() > 0) { dp.SettingsRepository.UpsertSetting(TruckClientSettingKeys.TRUCK_ID, localTrucks.First().Id); } if (localDrivers.Count() > 0) { dp.SettingsRepository.UpsertSetting(TruckClientSettingKeys.DRIVER_ID, localDrivers.First().Id); } dp.SaveChanges(); } } catch (Exception exc) { ErrorMessage = "Unable to connect to cloud."; ShowErrorMessage = true; } try { var syncedSettings = await DocumentDBContext.GetAllItemsAsync <SyncedSettings>(p => p.EntityType == EntityType.SETTING_SUMMARY); var settingsToSave = syncedSettings.FirstOrDefault(); var localSyncedSetting = dp.SyncedSettingsRepo.GetAll().FirstOrDefault(); settingsToSave.SyncedToCloud = true; if (localSyncedSetting == null) { dp.SyncedSettingsRepo.Add(settingsToSave); dp.SaveChanges(); } } catch (Exception exc) { ErrorMessage = "Unable to retrieve system settings."; ShowErrorMessage = true; Logging.Logger.Log(exc); } } Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage { IsBusy = true, Message = "Settings Saved." }); System.Threading.Thread.Sleep(2000); Messenger.Default.Send <BusyMessage>(new Messages.BusyMessage { IsBusy = false, Message = "" }); if (shutDown) { Environment.Exit(0); } } CottonDBMS.TruckApp.Helpers.SettingsHelper.PersistSettingsToAppData(); }); }