/// <summary>Hit when the test for connection is finished.</summary> /// <param name="sender">SoapServiceClient</param> /// <param name="e">Connection_Authenticate2CompletedEventArgs</param> private void client2_Connection_Authenticate2Completed(object sender, Connection_Authenticate2CompletedEventArgs e) { const string METHOD = CLASS_NAME + "client2_Connection_Authenticate2Completed()"; if (e.Error == null && e.Result) { Logger.LogTrace(METHOD, "Screen #3: Moved to screen #4."); //Advance the page. this.grdContent.Children.Clear(); this.grdContent.Children.Add(this._page4); this._page4.txtProjectName.Text = this._page2.SelectedProject.Name; this._pageNo = 4; this.grdForm.IsEnabled = true; this.Cursor = Cursors.Arrow; this.btnBack.IsEnabled = true; } else { if (e.Error != null) { if (e.Error.InnerException != null && e.Error.InnerException.GetType() == typeof(System.Net.WebException)) { if (e.Error.InnerException.Message.Contains("could not be resolved")) { MessageBox.Show("The server could not be found. IP Address or DNS name unreachable.", "Server Error", MessageBoxButton.OK, MessageBoxImage.Error); } else if (e.Error.InnerException.Message.Contains("returned an error")) { MessageBox.Show("The API could not be reached at that address. Please check the entered URL. Spira version 4.0 or newer is required.", "Server Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("There was an error connecting to the server:" + Environment.NewLine + e.Error.InnerException.Message, "Server Error", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("There was an error connecting to the server:" + Environment.NewLine + e.Error.Message, "Server Error", MessageBoxButton.OK, MessageBoxImage.Error); } Logger.LogError(METHOD, e.Error, "While connecting to server:"); } else { MessageBox.Show("Invalid password for the Administrator account!", "Incorrect Login", MessageBoxButton.OK, MessageBoxImage.Error); Logger.LogError(METHOD, null, "While connecting to server:" + Environment.NewLine + "Invalid password given for user."); } //Reset form. this.grdForm.IsEnabled = true; this.Cursor = Cursors.Arrow; this.btnNext.IsEnabled = true; } }
/// <summary>Hit when we're authenticated to the server.</summary> /// <param name="sender">ImportExportClient</param> /// <param name="e">Connection_Authenticate2CompletedEventArgs</param> private void clientSave_Connection_Authenticate2Completed(object sender, Connection_Authenticate2CompletedEventArgs e) { const string METHOD = CLASS + "clientSave_Connection_Authenticate2Completed()"; Logger.LogTrace_EnterMethod(METHOD + " " + this._clientNumSaving.ToString() + " clients running."); try { ImportExportClient client = (sender as ImportExportClient); this._clientNumSaving--; this.barSavingReq.Value++; if (!e.Cancelled) { if (e.Error == null) { if (e.Result) { //Connect to the progect ID. this._clientNumSaving++; client.Connection_ConnectToProjectAsync(((SpiraProject)this._ArtifactDetails.ArtifactParentProject.ArtifactTag).ProjectID, this._clientNum++); } else { //TODO: Show Error. //Cancel calls. this._clientNumSaving++; client.Connection_DisconnectAsync(this._clientNum++); } } else { //TODO: Show Error. //Cancel calls. this._clientNumSaving++; client.Connection_DisconnectAsync(this._clientNum++); } } //See if it's okay to reload. this.save_CheckIfOkayToLoad(); } catch (Exception ex) { Logger.LogMessage(ex, METHOD); MessageBox.Show(StaticFuncs.getCultureResource.GetString("app_General_UnexpectedError"), StaticFuncs.getCultureResource.GetString("app_General_ApplicationShortName"), MessageBoxButton.OK, MessageBoxImage.Error); } Logger.LogTrace_ExitMethod(METHOD + " " + this._clientNumSaving.ToString() + " clients left."); }
/// <summary>Hit when the test for connection is finished.</summary> /// <param name="sender">SoapServiceClient</param> /// <param name="e">Connection_Authenticate2CompletedEventArgs</param> private void client1_Connection_Authenticate2Completed(object sender, Connection_Authenticate2CompletedEventArgs e) { const string METHOD = CLASS_NAME + "client1_Connection_Authenticate2Completed()"; if (e.Error == null && e.Result) { Logger.LogTrace(METHOD, "Screen #1: Logged in to server, getting project list."); //Load the projects.. ((SoapServiceClient)sender).Project_RetrieveCompleted += new EventHandler <Project_RetrieveCompletedEventArgs>(client1_Project_RetrieveCompleted); ((SoapServiceClient)sender).Project_RetrieveAsync(); } else { if (e.Error != null) { if (e.Error.InnerException != null && e.Error.InnerException.GetType() == typeof(System.Net.WebException)) { if (e.Error.InnerException.Message.Contains("could not be resolved")) { MessageBox.Show("The server could not be found. IP Address or DNS name unreachable.", "Server Error", MessageBoxButton.OK, MessageBoxImage.Error); } else if (e.Error.InnerException.Message.Contains("returned an error")) { MessageBox.Show("The API could not be reached at that address. Please check the entered URL. Spira version 4.0 or newer is required.", "Server Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("There was an error connecting to the server:" + Environment.NewLine + e.Error.InnerException.Message, "Server Error", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("There was an error connecting to the server:" + Environment.NewLine + e.Error.Message, "Server Error", MessageBoxButton.OK, MessageBoxImage.Error); } Logger.LogError(METHOD, e.Error, "While connecting to server:"); } else { MessageBox.Show("Invalid password for the Administrator account!", "Incorrect Login", MessageBoxButton.OK, MessageBoxImage.Error); Logger.LogError(METHOD, null, "While connecting to server:" + Environment.NewLine + "Invalid password given for user."); } //Reset form. this.grdForm.IsEnabled = true; this.Cursor = Cursors.Arrow; this.btnNext.IsEnabled = true; } }
/// <summary>Hit when the testing client connects to the server..</summary> /// <param name="sender">SoapServiceClient</param> /// <param name="e">Connection_Authenticate2CompletedEventArgs</param> private void client_Connection_Authenticate2Completed(object sender, Connection_Authenticate2CompletedEventArgs e) { this.txtTesting.Text += "."; if (e.Error == null) { //Get a list of projects.. ((SoapServiceClient)e.UserState).Project_RetrieveAsync(e.UserState); } else { //We didn't connect. This should never happen. Logger.LogError("", e.Error, "Testing new user password. Trying to connect to system."); MessageBox.Show("Could not connect to the server. This could mean all licenses are in use.", "Error Testing", MessageBoxButton.OK, MessageBoxImage.Warning); this.divTesting.Visibility = System.Windows.Visibility.Collapsed; } }
/// <summary>Hit when we've successfully connected to the server.</summary> /// <param name="sender">ImportExporClient</param> /// <param name="e">Connection_Authenticate2CompletedEventArgs</param> private void wkfClient_Connection_Authenticate2Completed(object sender, Connection_Authenticate2CompletedEventArgs e) { try { const string METHOD = CLASS + "wkfClient_Connection_Authenticate2Completed()"; Logger.LogTrace(METHOD + " ENTER."); this._clientNumRunning--; this.barLoadingIncident.Value++; if (sender is ImportExportClient) { ImportExportClient client = sender as ImportExportClient; if (!e.Cancelled) { if (e.Error == null && e.Result) { //Connect to our project. this._clientNumRunning++; client.Connection_ConnectToProjectAsync(((SpiraProject)this._ArtifactDetails.ArtifactParentProject.ArtifactTag).ProjectID, this._clientNum++); } else { if (e.Error != null) { Logger.LogMessage(e.Error); } else { Logger.LogMessage(METHOD, "Could not log in.", System.Diagnostics.EventLogEntryType.Error); } } } } Logger.LogTrace_ExitMethod(METHOD + " Clients - Running: " + this._clientNumRunning.ToString() + ", Total: " + this._clientNum.ToString()); } catch (Exception ex) { Logger.LogMessage(ex, "wkfClient_Connection_Authenticate2Completed()"); MessageBox.Show(StaticFuncs.getCultureResource.GetString("app_General_UnexpectedError"), StaticFuncs.getCultureResource.GetString("app_General_ApplicationShortName"), MessageBoxButton.OK, MessageBoxImage.Error); } }
/// <summary>Hit when the client is finished connecting and logging in.</summary> /// <param name="sender">The client that called it.</param> /// <param name="e">Event Args.</param> private void client_FinishConnecting(object sender, EventArgs e) { try { ImportExport client = (ImportExport)sender; string eType = e.GetType().ToString(); eType = eType.Substring(eType.LastIndexOf('.') + 1); switch (eType) { case "Connection_Authenticate2CompletedEventArgs": { //Connect finished. Connection_Authenticate2CompletedEventArgs evt = (Connection_Authenticate2CompletedEventArgs)e; ObjectState evtObj = (ObjectState)evt.UserState; if (evt.Error == null) { client.System_GetProductVersionAsync(evtObj); } else { //Set error to node. TreeViewItem oldNode = (TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]; this.trvProject.Items.RemoveAt(evtObj.NodeNumber); this.trvProject.Items.Insert(evtObj.NodeNumber, this.changeNodeImage(oldNode, "imgError")); ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).ToolTip = new TextBlock() { Text = evt.Error.Message }; ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).Items.Clear(); //Error, clean up. removeClient(client); } } break; case "System_GetProductVersionCompletedEventArgs": { //Connect finished. System_GetProductVersionCompletedEventArgs evt = (System_GetProductVersionCompletedEventArgs)e; ObjectState evtObj = (ObjectState)evt.UserState; if (evt.Error == null) { evtObj.ClientVersion = evt.Result; client.Connection_ConnectToProjectAsync(evtObj.Project.ProjectID, evtObj); } else { //Set error to node. TreeViewItem oldNode = (TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]; this.trvProject.Items.RemoveAt(evtObj.NodeNumber); this.trvProject.Items.Insert(evtObj.NodeNumber, this.changeNodeImage(oldNode, "imgError")); ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).ToolTip = new TextBlock() { Text = evt.Error.Message }; ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).Items.Clear(); //Error, clean up. removeClient(client); } } break; case "Connection_ConnectToProjectCompletedEventArgs": { //Connect finished. Connection_ConnectToProjectCompletedEventArgs evt = (Connection_ConnectToProjectCompletedEventArgs)e; ObjectState evtObj = (ObjectState)evt.UserState; if (evt.Error == null) { evtObj.curSearchIsMine = true; RemoteFilter[] filters = GenerateFilter(evtObj.Project.UserID, this.btnShowClosed.IsChecked.Value, "IN"); RemoteSort sort = GenerateSort(); client.Incident_RetrieveAsync(filters, sort, 1, 9999999, evtObj); } else { //Set error to node. TreeViewItem oldNode = (TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]; this.trvProject.Items.RemoveAt(evtObj.NodeNumber); this.trvProject.Items.Insert(evtObj.NodeNumber, this.changeNodeImage(oldNode, "imgError")); ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).ToolTip = new TextBlock() { Text = evt.Error.Message }; ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).Items.Clear(); //Error, clean up. removeClient(client); } } break; } } catch (Exception ex) { Connect.logEventMessage("wpfProjectTree::client_FinishConnecting", ex, System.Diagnostics.EventLogEntryType.Error); } }
/// <summary>Hit when communication is finished with the server.</summary> /// <param name="sender">SoapServiceClient</param> /// <param name="e">EventArgs</param> private void _client_CommunicationFinished(object sender, AsyncCompletedEventArgs e) { try { if (e.Error == null) { try { if (e.GetType() == typeof(Connection_Authenticate2CompletedEventArgs)) { Connection_Authenticate2CompletedEventArgs evt = e as Connection_Authenticate2CompletedEventArgs; if (evt.Result) { this.txtStatus.Text = "Getting user information..."; this._client.User_RetrieveByUserNameAsync(this.txbUserID.Text, false); } else { //Failed login. this.btnConnect_Click(null, null); //Just act like they canceled the service, then set error flag. this.barProg.Foreground = (Brush) new System.Windows.Media.BrushConverter().ConvertFrom(StaticFuncs.getCultureResource.GetString("app_Colors_StyledBarError")); this.barProg.Value = 1; this.txtStatus.Text = "Invalid username or password."; } } else if (e.GetType() == typeof(User_RetrieveByUserNameCompletedEventArgs)) { User_RetrieveByUserNameCompletedEventArgs evt = e as User_RetrieveByUserNameCompletedEventArgs; if (evt != null) { this.txtStatus.Text = "Getting Projects..."; this.txbUserNum.Text = evt.Result.UserId.ToString(); this._client.Project_RetrieveAsync(); } else { throw new Exception("Results are null."); } } else if (e.GetType() == typeof(Project_RetrieveCompletedEventArgs)) { this.cmbProjectList.Items.Clear(); Project_RetrieveCompletedEventArgs evt = e as Project_RetrieveCompletedEventArgs; //Load projects here. if (evt != null && evt.Result.Count > 0) { SpiraProject matchingProject = null; foreach (RemoteProject RemoteProj in evt.Result) { Business.SpiraProject Project = new Business.SpiraProject(); Project.ProjectId = RemoteProj.ProjectId.Value; Project.ServerURL = new Uri(this.txbServer.Text); Project.UserName = this.txbUserID.Text; Project.UserPass = this.txbUserPass.Password; Project.UserID = int.Parse(this.txbUserNum.Text); this.cmbProjectList.Items.Add(Project); if (SpiraContext.ProjectId == Project.ProjectId) { matchingProject = Project; } } //Select one if necessary if (matchingProject != null) { this.cmbProjectList.SelectedItem = matchingProject; } else { this.cmbProjectList.SelectedIndex = 0; } this.grdAvailProjs.IsEnabled = true; } else { int num = this.cmbProjectList.Items.Add("-- No Projects Available --"); this.cmbProjectList.SelectedIndex = num; } //Reset form. this.btnConnect_Click(null, null); } } catch (Exception ex) { Logger.LogMessage(ex); //Reset form. this.btnConnect_Click(null, null); //Just act like they canceled the service, then set error flag. this.barProg.Foreground = (Brush) new System.Windows.Media.BrushConverter().ConvertFrom(StaticFuncs.getCultureResource.GetString("app_Colors_StyledBarError")); this.barProg.Value = 1; this.txtStatus.Text = "Error connecting."; this.txtStatus.ToolTip = ex.Message; } } else { Logger.LogMessage(e.Error); //Reset form. this.btnConnect_Click(null, null); //Just act like they canceled the service, then set error flag. this.barProg.Foreground = (Brush) new System.Windows.Media.BrushConverter().ConvertFrom(StaticFuncs.getCultureResource.GetString("app_Colors_StyledBarError")); this.barProg.Value = 1; this.txtStatus.Text = "Could not connect!"; this.txtStatus.ToolTip = e.Error.Message; } } catch (Exception ex) { Logger.LogMessage(ex, "_client_CommunicationFinished()"); MessageBox.Show(StaticFuncs.getCultureResource.GetString("app_General_UnexpectedError"), StaticFuncs.getCultureResource.GetString("app_General_ApplicationShortName"), MessageBoxButton.OK, MessageBoxImage.Error); } }
/// <summary>Called when the client finished a piece of work.</summary> /// <param name="sender">The client.</param> /// <param name="e">EventArgs</param> void client_ActionCompleted(object sender, EventArgs e) { try { if (e.GetType() == typeof(Connection_Authenticate2CompletedEventArgs)) { Connection_Authenticate2CompletedEventArgs evt = (Connection_Authenticate2CompletedEventArgs)e; if (evt.Error == null) { this.txtStatus.Text = "Getting user information..."; this._client.User_RetrieveByUserNameAsync(this.txbUserID.Text); } else { this.btnConnect_Click(null, null); //Just act like they canceled the service, then set error flag. this.barProg.Foreground = System.Windows.Media.Brushes.Red; this.barProg.Value = 1; this.txtStatus.Text = "Could not connect!"; this.txtStatus.ToolTip = evt.Error.Message; } } else if (e.GetType() == typeof(User_RetrieveByUserNameCompletedEventArgs)) { User_RetrieveByUserNameCompletedEventArgs evt = (User_RetrieveByUserNameCompletedEventArgs)e; if (evt.Error == null) { this.txtStatus.Text = "Getting Projects..."; this.txbUserNum.Text = evt.Result.UserId.ToString(); this._client.Project_RetrieveAsync(); } else { this.btnConnect_Click(null, null); //Just act like they canceled the service, then set error flag. this.barProg.Foreground = System.Windows.Media.Brushes.Red; this.barProg.Value = 1; this.txtStatus.Text = "Could not get user info."; this.txtStatus.ToolTip = evt.Error.Message; } } else if (e.GetType() == typeof(Spira_ImportExport.Project_RetrieveCompletedEventArgs)) { Project_RetrieveCompletedEventArgs evt = (Project_RetrieveCompletedEventArgs)e; if (evt.Error == null) { this.cmbProjectList.Items.Clear(); //Load projects here. if (evt.Result.Length > 0) { foreach (RemoteProject RemoteProj in evt.Result) { Connect.SpiraProject Project = new Connect.SpiraProject(); Project.ProjectID = RemoteProj.ProjectId.Value; Project.ServerURL = new Uri(this.txbServer.Text); Project.UserName = this.txbUserID.Text; Project.UserPass = this.txbUserPass.Password; Project.UserID = int.Parse(this.txbUserNum.Text); this.cmbProjectList.Items.Add(Project); } this.cmbProjectList.SelectedIndex = 0; this.grdAvailProjs.IsEnabled = true; this.grdEntry.IsEnabled = true; this.barProg.IsIndeterminate = false; this.barProg.Value = 0; this.btnConnect.Content = "_Get Projects"; this.btnConnect.Tag = false; this.txtStatus.Text = ""; this.txtStatus.ToolTip = null; } else { int num = this.cmbProjectList.Items.Add("-- No Projects Available --"); this.cmbProjectList.SelectedIndex = num; //Reset form. this.grdEntry.IsEnabled = true; this.barProg.IsIndeterminate = false; this.btnConnect.Content = "_Get Projects"; this.btnConnect.Tag = false; } } else { this.btnConnect_Click(null, null); //Just act like they canceled the service, then set error flag. this.barProg.Foreground = System.Windows.Media.Brushes.Red; this.barProg.Value = 1; this.txtStatus.Text = "Could not get projects."; this.txtStatus.ToolTip = evt.Error.Message; } } } catch (Exception ex) { Connect.logEventMessage("wpfNewSpiraProject::client_ActionCompleted", ex, System.Diagnostics.EventLogEntryType.Error); } }
private void _client_CommunicationFinished(object sender, AsyncCompletedEventArgs e) { try { if (e.Error == null) { try { if (e.GetType() == typeof(Connection_Authenticate2CompletedEventArgs)) { Connection_Authenticate2CompletedEventArgs evt = e as Connection_Authenticate2CompletedEventArgs; if (evt.Result) { this._client.User_RetrieveByUserNameAsync(this.id, false); } } else if (e.GetType() == typeof(User_RetrieveByUserNameCompletedEventArgs)) { User_RetrieveByUserNameCompletedEventArgs evt = e as User_RetrieveByUserNameCompletedEventArgs; if (evt != null) { this._client.Project_RetrieveAsync(); } else { throw new Exception("Results are null."); } } else if (e.GetType() == typeof(Project_RetrieveCompletedEventArgs)) { _Projects.Clear(); Project_RetrieveCompletedEventArgs evt = e as Project_RetrieveCompletedEventArgs; //Load projects here. if (evt != null && evt.Result.Count > 0) { SpiraProject matchingProject = null; foreach (RemoteProject RemoteProj in evt.Result) { Business.SpiraProject Project = new Business.SpiraProject(); Project.ProjectId = RemoteProj.ProjectId.Value; Project.ServerURL = new Uri(this.address); Project.UserName = this.id; Project.UserPass = this.password; Project.UserID = int.Parse(this.id); TreeViewArtifact nProject = new TreeViewArtifact(spiraExplorer.refresh); nProject.ArtifactTag = Project; nProject.ArtifactId = ((Business.SpiraProject)nProject.ArtifactTag).ProjectId; nProject.ArtifactName = ((Business.SpiraProject)nProject.ArtifactTag).ProjectName; nProject.ArtifactType = TreeViewArtifact.ArtifactTypeEnum.Project; nProject.ArtifactIsFolder = true; nProject.Parent = null; _Projects.Add(nProject); if (SpiraContext.ProjectId == Project.ProjectId) { matchingProject = Project; } } } } } catch (Exception ex) { Logger.LogMessage(ex); } } else { Logger.LogMessage(e.Error); } } catch (Exception ex) { Logger.LogMessage(ex, "_client_CommunicationFinished()"); MessageBox.Show(StaticFuncs.getCultureResource.GetString("app_General_UnexpectedError"), StaticFuncs.getCultureResource.GetString("app_General_ApplicationShortName"), MessageBoxButton.OK, MessageBoxImage.Error); } //Access the SLN/SUO file to get the associated Spira URL, credentials and project if (SpiraContext.HasSolutionProps) { spiraExplorer.loadProject(SpiraContext.ProjectId); } }