Ejemplo n.º 1
0
        private void btnSendError_Click(object sender, EventArgs e)
        {
            // Validation
            if (!ValidateLogin())
            {
                tbLogin.Focus();
                return;
            }
            if (!ValidatePassword())
            {
                tbPassword.Focus();
                return;
            }

            // Send error
            EnableControls(false);
            var bworker = new BackgroundWorker();
            bworker.DoWork += delegate(object sender1, DoWorkEventArgs e1)
                {
                    var logFile = ZipLog();
                    var issueTracker = new IssueTracker("hydrodesktop");
                    issueTracker.SignIn(tbLogin.Text, tbPassword.Text);

                    var issue = new Issue
                        {
                            Summary = _initParams.IsFatal ? "Fatal Error" : "Unhandled Exception",
                            Description = "Version: " + AppContext.Instance.ProductVersion + Environment.NewLine +
                                          "Description: " + tbDescribe.Text + Environment.NewLine +
                                          "==============================" + Environment.NewLine +
                                          "Error: " + tbError.Text,
                        };

                    if (!String.IsNullOrEmpty(logFile) && File.Exists(logFile))
                    {
                        try
                        {
                            var fi = new FileInfo(logFile);
                            issue.FileToAttach = fi;
                        }
                        catch (Exception ex)
                        {
                            AppContext.Instance.Get<IUserMessage>().Warn("Unable to attach log file.", ex);
                        }
                    }

                    e1.Result = issueTracker.CreateIssue(issue);
                };
            bworker.RunWorkerCompleted += delegate(object o, RunWorkerCompletedEventArgs args)
                {
                    EnableControls(true);
                    if (args.Error != null)
                    {
                        AppContext.Instance.Get<IUserMessage>().Error("Unable to send error.", args.Error);   
                    }else
                    {
                        AppContext.Instance.Get<IUserMessage>().Info("Error was sent." + Environment.NewLine +
                                                                      "Link to issue: " + args.Result);
                        _user = tbLogin.Text;
                        _password = tbPassword.Text;
                        Close();
                    }
                };
            bworker.RunWorkerAsync();
        }