예제 #1
0
        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 = ""
                    });
                }
            });
        }
예제 #2
0
        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();
            });
        }