public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null)
            {
                return(null);
            }

            APCAccount Account = (APCAccount)value;

            // Work through options in order of severity
            if (Account.DeleteStatus == "Deleted")
            {
                return("Deleted");
            }

            if (Account.ArchiveStatus == "Archived")
            {
                return("Archived");
            }

            if (Account.SuspendStatus == "Suspended")
            {
                return("Suspended");
            }

            return("Active");
        }
        private async void LookupResults_Reset_Button_Click(object sender, RoutedEventArgs e)
        {
            APCAccount account = (APCAccount)(sender as Button).DataContext;

            if (account.JenkinsServer != null &&
                account.LookupType != null &&
                account.LookupValue != null &&
                account.LookupValue.Trim() != "")
            {
                await JenkinsTasks.RunAPCAccountLookup(account);
            }
        }
        private async void Button_ChangeInactivityTimeout_Click(object sender, RoutedEventArgs e)
        {
            APCAccount Account         = (APCAccount)(sender as Button).DataContext;
            string     NewTimeoutValue = newTimeoutValue_TextBox.Text.Trim();

            if (NewTimeoutValue == null || NewTimeoutValue == "")
            {
                return;
            }

            await JenkinsTasks.updateTimeout(Account, NewTimeoutValue);
        }
        private async void NewLookupPane_LookupValueBox_KeyDown(object sender, KeyEventArgs e)
        {
            APCAccount account = (APCAccount)(sender as TextBox).DataContext;

            account.LookupValue = (sender as TextBox).Text; // Force this to apply for every keydown, as the data binding doesn't pass it otherwise until the box is left

            if (e.Key == Key.Enter || e.Key == Key.Return)
            {
                e.Handled = true;

                if (account.JenkinsServer != null &&
                    account.LookupType != null &&
                    account.LookupValue != null &&
                    account.LookupValue.Trim() != "")
                {
                    await JenkinsTasks.RunAPCAccountLookup(account);
                }
            }
        }
        private async void Button_ResendWelcomeEmail_Click(object sender, RoutedEventArgs e)
        {
            string SpecifiedEmail = specifyEmail_TextBox.Text.Trim();

            APCAccount         Account = (APCAccount)(sender as Button).DataContext;
            WelcomeEmailSendTo SendTo  = WelcomeEmailSendTo.PrimaryAccountEmail;

            if (specifyEmail_RadioButton.IsChecked == true)
            {
                SendTo = WelcomeEmailSendTo.SpecifiedEmail;

                if (SpecifiedEmail == null || SpecifiedEmail == "")
                {
                    return;
                }
            }

            await JenkinsTasks.resendWelcomeEmail(Account, SendTo, SpecifiedEmail);
        }
        private void LookupListPane_NewLookup_Click(object sender, RoutedEventArgs e)
        {
            if (LookupResults.Count >= 10)
            {
                MessageBox.Show("Too many lookups");
                return;
            }

            APCAccount Account = new APCAccount();

            Account.LookupCreateTime = DateTime.Now;

            if (JenkinsInfo.Instance.ConfiguredJenkinsServers.Count == 1)
            {
                Account.JenkinsServer = JenkinsInfo.Instance.ConfiguredJenkinsServers[0];
            }

            LookupResults.Insert(0, Account);
            LookupListPane_Lookups_ListBox.SelectedIndex = 0;
        }
        private void LookupListPane_RemoveLookup_Click(object sender, RoutedEventArgs e)
        {
            APCAccount Account = (APCAccount)(sender as Button).DataContext;

            LookupResults.Remove(Account);
        }
        public MainWindow()
        {
            if (!ValidateUserConfigFile())
            {
                CreateDefaultUserConfigFile();
            }

            ApplicationSettings.Load();

            JenkinsInfo.Instance.AvailableJenkinsServers  = JenkinsTasks.getJenkinsServerList();
            JenkinsInfo.Instance.ConfiguredJenkinsServers = LoadConfiguredServersFromUserConfig();
            JenkinsInfo.Instance.LookupTypeList           = JenkinsTasks.buildAPCLookupTypeList();

            if (JenkinsInfo.Instance.ConfiguredJenkinsServers.Count < 1)
            {
                CurrentWindowState.Instance.DisplayMode = WindowDisplayMode.Config;
            }
            else
            {
                CurrentWindowState.Instance.DisplayMode = WindowDisplayMode.Lookup;
            }

            LoadConfiguredServersFromUserConfig();

            InitializeComponent();

            LookupListPane_Lookups_ListBox.ItemsSource = LookupResults;

            APCAccount DebugAccount = new APCAccount()
            {
                LookupStatus                  = APCAccountLookupStatus.Successful,
                ResendWelcomeEmailStatus      = JenkinsBuildStatus.Failed,
                ChangeInactivityTimeoutStatus = JenkinsBuildStatus.Successful,
                IITID            = "12345",
                AccountName      = "DebugTest",
                Email            = "*****@*****.**",
                CreateDate       = "2000BC",
                TrialOrPaid      = "Trial",
                SerialNumber     = "12345-ABCDE-67890-FGHIJ",
                SeatCount        = "3",
                SuspendStatus    = "NotSuspended",
                ArchiveStatus    = "NotArchived",
                SiteName         = "DebugSite",
                IISServer        = "DBG1-DBGIIS-01",
                LoginUrl         = "http://localhost/",
                UploadUrl        = "http://localhost",
                ZuoraAccount     = "A00123456",
                DeleteStatus     = "NotDeleted",
                AccountType      = "ActPremiumCloudPlus",
                TimeoutValue     = "60",
                LookupTime       = DateTime.Now,
                LookupCreateTime = DateTime.Now,
                JenkinsServer    = new JenkinsServer()
                {
                    id   = "DBG1",
                    name = "Debug 1",
                    url  = "http://localhost/"
                }
            };

            //LookupResults.Add(DebugAccount);
        }