/// <summary>Starts the thread.</summary>
        public void StartProcess()
        {
            try
            {
                //Connect to the server, get
                Settings.KronoClient.SoapServiceClient client = Settings.ClientFactory.CreateClient_Krono(new Uri(this._serverURL + "/" + ClientFactory.KRONO_API));

                //Log in..
                if (client.Connection_Authenticate(this._userName, this._userPass, Common.APP_NAME, true))
                {
                    //Okay, try to get the list of project.
                    List <RemoteProduct> prods = client.Product_Retrieve(false);

                    //Got projects? Return 'em!
                    if (this.ProgressFinished != null)
                    {
                        this.ProgressFinished(this, new KronoFinishArgs(prods));
                    }
                }
                else
                {
                    if (this.ProgressFinished != null)
                    {
                        this.ProgressFinished(this, new KronoFinishArgs(new Exception("Could not log in with username and password! Check your application server definition and try again.")));
                    }
                }
            }
            catch (Exception ex)
            {
                if (this.ProgressFinished != null)
                {
                    this.ProgressFinished(this, new KronoFinishArgs(new Exception("Could not connect to the server. Check your application server definition and try again.", ex)));
                }
            }
        }
Пример #2
0
        /// <summary>Creates and returns a WSDL client for the given application system. Will try to connect and log on and select project if applicable. If any fails, an exception will be thrown.</summary>
        /// <param name="applicationSystem">The application system definition.</param>
        /// <returns>A client, as a dynamic type.</returns>
        private dynamic CreateApplicationClient(ApplicationSystem applicationSystem, AccountDetails emailSystem)
        {
            const string METHOD = CLASS + "CreateApplicationClient()";

            _eventLog.EntryLog(METHOD);

            //Create our application server.
            dynamic clientApp;

            if (applicationSystem.ServerType == ApplicationSystem.ApplServerTypeEnum.Spira)
            {
                //Create the client.
                clientApp = ClientFactory.CreateClient_Spira(new Uri(applicationSystem.ServerAPIUrl));

                //Connect.
                _eventLog.WriteTrace(METHOD, "Logging into Spira Client.");
                Settings.SpiraClient.SoapServiceClient spiraClient = (Settings.SpiraClient.SoapServiceClient)clientApp;
                if (spiraClient.Connection_Authenticate2(applicationSystem.UserID, applicationSystem.UserPassword, Common.APP_NAME))
                {
                    _eventLog.WriteTrace(METHOD, "Selecting project in Spira Client.");
                    if (emailSystem.ProductOrProjectId.HasValue && spiraClient.Connection_ConnectToProject(emailSystem.ProductOrProjectId.Value))
                    {
                        //We're successful.
                    }
                    else
                    {
                        throw new Exception("Could not log into project #" + emailSystem.ProductOrProjectId.Value.ToSafeString());
                    }
                }
                else
                {
                    throw new Exception("Could not log into server.");
                }
            }
            else
            {
                //Create the client.
                clientApp = ClientFactory.CreateClient_Krono(new Uri(applicationSystem.ServerAPIUrl));

                //Connect.
                _eventLog.WriteTrace(METHOD, "Logging into Krono Client.");
                Settings.KronoClient.SoapServiceClient kronoClient = (Settings.KronoClient.SoapServiceClient)clientApp;
                if (kronoClient.Connection_Authenticate(applicationSystem.UserID, applicationSystem.UserPassword, Common.APP_NAME, true))
                {
                }
                else
                {
                    throw new Exception("Could not log into server.");
                }
            }
            return(clientApp);
        }
        /// <summary>Hit when we're going to connect to the server.</summary>
        /// <param name="sender">BackgroundWorker</param>
        /// <param name="e">DoWorkEventArgs</param>
        private void btnTest_TestConnection(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker  = sender as BackgroundWorker;
            bool             success = false;

            if (e.Argument is btnTest_DoWorkArgs)
            {
                //Get our arguments.
                btnTest_DoWorkArgs workerArgs = (btnTest_DoWorkArgs)e.Argument;

                //Start the process..!
                worker.ReportProgress(0, "Connecting to server...");
                if (workerArgs.isSpira)
                {
                    try
                    {
                        //Create client.
                        Settings.SpiraClient.SoapServiceClient spiraClient = Settings.ClientFactory.CreateClient_Spira(workerArgs.serverUrl);

                        //Now try to sign in.
                        worker.ReportProgress(50, "Logging in...");
                        success = spiraClient.Connection_Authenticate2(workerArgs.loginId, workerArgs.loginPass, "EmailIntegration");
                    }
                    catch (Exception ex)
                    {
                        worker.ReportProgress(100, ex);
                        return;
                    }
                }
                else
                {
                    try
                    {
                        //reate client.
                        Settings.KronoClient.SoapServiceClient kronoClient = Settings.ClientFactory.CreateClient_Krono(workerArgs.serverUrl);

                        //Now try to sign in.
                        worker.ReportProgress(50, "Logging in...");
                        success = kronoClient.Connection_Authenticate(workerArgs.loginId, workerArgs.loginPass, "EmailIntegration", false);
                    }
                    catch (Exception ex)
                    {
                        worker.ReportProgress(100, ex);
                        return;
                    }
                }

                //Send result back to main thread.
                worker.ReportProgress(100, success);
            }
        }