private void CreateCommands() { Add = ReactiveCommand.Create(ExecuteAdd); //get existing jobs and tags/instruments Load = ReactiveCommand.CreateFromTask(async _ => { var dataUpdateJobs = _client.GetaDataUpdateJobs(); var econReleaseUpdateJobs = _client.GetEconomicReleaseUpdateJobs(); var dividendUpdateJobs = _client.GetDividendUpdateJobs(); var earningsUpdateJobs = _client.GetEarningsUpdateJobs(); var tags = _client.GetTags(); var instruments = _client.GetInstruments(); var econReleaseSources = _client.GetEconomicReleaseDataSources(); var dividendSources = _client.GetDividendDataSources(); var earningsSources = _client.GetEarningsDataSources(); await Task.WhenAll(dataUpdateJobs, econReleaseUpdateJobs, dividendUpdateJobs, tags, instruments, econReleaseSources, dividendSources, earningsUpdateJobs, earningsSources).ConfigureAwait(false); var responses = new ApiResponse[] { dataUpdateJobs.Result, econReleaseUpdateJobs.Result, dividendUpdateJobs.Result, tags.Result, instruments.Result, econReleaseSources.Result, dividendSources.Result, earningsUpdateJobs.Result, earningsSources.Result }; if (await responses.DisplayErrors(this, DialogCoordinator).ConfigureAwait(true)) { return(null); } Tags.AddRange(tags.Result.Result); Instruments.AddRange(instruments.Result.Result); EconomicReleaseDataSources.AddRange(econReleaseSources.Result.Result); DividendDataSources.AddRange(dividendSources.Result.Result); EarningsDataSources.AddRange(earningsSources.Result.Result); var jobs = new List <IJobSettings>(); jobs.AddRange(dataUpdateJobs.Result.Result); jobs.AddRange(econReleaseUpdateJobs.Result.Result); jobs.AddRange(dividendUpdateJobs.Result.Result); jobs.AddRange(earningsUpdateJobs.Result.Result); return(jobs); }); Load.Subscribe(jobs => { if (jobs == null) { return; } foreach (var job in jobs) { Jobs.Add(GetJobViewModel(job)); } }); //Delete job var deleteCanExecute = this .WhenAnyValue(x => x.SelectedJob) .Select(x => x != null && !string.IsNullOrEmpty(x.PreChangeName)); Delete = ReactiveCommand.CreateFromTask(async _ => { //Give a dialog to confirm the deletion MessageDialogResult dialogResult = await DialogCoordinator.ShowMessageAsync(this, "Delete Job", string.Format("Are you sure you want to delete {0}?", SelectedJob.Name), MessageDialogStyle.AffirmativeAndNegative); if (dialogResult != MessageDialogResult.Affirmative) { return; } //If the name has changed but hasn't been saved, we change it back to be in sync with the server SelectedJob.Name = SelectedJob.PreChangeName; //Request deletion var response = await SelectedJob.Delete.Execute(); if (await response.DisplayErrors(this, DialogCoordinator)) { return; } //if it was successful, remove the VM from the list Jobs.Remove(SelectedJob); SelectedJob = null; }, deleteCanExecute); }
public SettingsWindow() { InitializeComponent(); //Economic Releases EconomicReleaseDataSources.Add("FXStreet"); SelectedDefaultEconomicReleaseDatasource = Properties.Settings.Default.EconomicReleaseDefaultDatasource; //ports for the servers RTDPubPortTextBox.Text = Properties.Settings.Default.rtDBPubPort.ToString(); RTDReqPortTextBox.Text = Properties.Settings.Default.rtDBReqPort.ToString(); HDPortTextBox.Text = Properties.Settings.Default.hDBPort.ToString(); HttpPort.Text = Properties.Settings.Default.httpPort.ToString(); //REST API key RestApiKeyTextBox.Text = Properties.Settings.Default.apiKey; UseSslCheckBox.IsChecked = Properties.Settings.Default.useSsl; //logs LogFolderTextBox.Text = Properties.Settings.Default.logDirectory; //IB Settings IBHostTextBox.Text = Properties.Settings.Default.ibClientHost; IBPortTextBox.Text = Properties.Settings.Default.ibClientPort.ToString(); IBHistClientIDTextBox.Text = Properties.Settings.Default.histClientIBID.ToString(); IBRTDClientIDTextBox.Text = Properties.Settings.Default.rtdClientIBID.ToString(); IBUseNewRealtimeDataSystem.IsChecked = Properties.Settings.Default.ibUseNewRealTimeDataSystem; //Quandl QuandlAPITokenTextBox.Text = Properties.Settings.Default.quandlAuthCode; //BarChart BarChartAPITokenTextBox.Text = Properties.Settings.Default.barChartApiKey; //Database if (Properties.Settings.Default.databaseType == "MySql") { DbTypeMySql.IsChecked = true; DbTypeSqlServer.IsChecked = false; } else { DbTypeMySql.IsChecked = false; DbTypeSqlServer.IsChecked = true; } MySqlHost.Text = Properties.Settings.Default.mySqlHost; MySqlUsername.Text = Properties.Settings.Default.mySqlUsername; MySqlPassword.Password = EncryptionUtils.Unprotect(Properties.Settings.Default.mySqlPassword); SqlServerAuthenticationWindowsRadioBtn.IsChecked = Properties.Settings.Default.sqlServerUseWindowsAuthentication; SqlServerAuthenticationServerRadioBtn.IsChecked = !Properties.Settings.Default.sqlServerUseWindowsAuthentication; SqlServerHost.Text = Properties.Settings.Default.sqlServerHost; SqlServerUsername.Text = Properties.Settings.Default.sqlServerUsername; SqlServerPassword.Password = EncryptionUtils.Unprotect(Properties.Settings.Default.sqlServerPassword); //Data jobs UpdateJobEmailHost.Text = Properties.Settings.Default.updateJobEmailHost; UpdateJobEmailPort.Text = Properties.Settings.Default.updateJobEmailPort.ToString(); UpdateJobEmailUsername.Text = Properties.Settings.Default.updateJobEmailUsername; UpdateJobEmailSender.Text = Properties.Settings.Default.updateJobEmailSender; UpdateJobEmail.Text = Properties.Settings.Default.updateJobEmail; UpdateJobEmailPassword.Password = EncryptionUtils.Unprotect(Properties.Settings.Default.updateJobEmailPassword); UpdateJobTimeout.Text = Properties.Settings.Default.updateJobTimeout.ToString(); UpdateJobAbnormalities.IsChecked = Properties.Settings.Default.updateJobReportOutliers; UpdateJobTimeouts.IsChecked = Properties.Settings.Default.updateJobTimeouts; UpdateJobDatasourceErrors.IsChecked = Properties.Settings.Default.updateJobReportErrors; UpdateJobNoData.IsChecked = Properties.Settings.Default.updateJobReportNoData; DataContext = this; }