Gallifrey.UI.Modern.Flyouts.Search.SearchButton C# (CSharp) Method

SearchButton() private method

private SearchButton ( object sender, RoutedEventArgs e ) : void
sender object
e System.Windows.RoutedEventArgs
return void
        private async void SearchButton(object sender, RoutedEventArgs e)
        {
            try
            {
                DataModel.SetIsSearching();

                Func<IEnumerable<Issue>> searchFunc;

                if (!string.IsNullOrWhiteSpace(DataModel.SearchTerm) && !string.IsNullOrWhiteSpace(DataModel.SelectedFilter))
                {
                    var searchTerm = DataModel.SearchTerm;
                    var searchFilter = DataModel.SelectedFilter;
                    searchFunc = () =>
                    {
                        var searchTermResults = modelHelpers.Gallifrey.JiraConnection.GetJiraIssuesFromSearchText(searchTerm);
                        var searchFilterResults = modelHelpers.Gallifrey.JiraConnection.GetJiraIssuesFromFilter(searchFilter);
                        return searchTermResults.Where(x => searchFilterResults.Any(y => y.key == x.key));
                    };
                }
                else if (!string.IsNullOrWhiteSpace(DataModel.SearchTerm))
                {
                    var searchTerm = DataModel.SearchTerm;
                    searchFunc = () => modelHelpers.Gallifrey.JiraConnection.GetJiraIssuesFromSearchText(searchTerm);
                }
                else if (!string.IsNullOrWhiteSpace(DataModel.SelectedFilter))
                {
                    var searchFilter = DataModel.SelectedFilter;
                    searchFunc = () => modelHelpers.Gallifrey.JiraConnection.GetJiraIssuesFromFilter(searchFilter);
                }
                else
                {
                    await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "Missing Search", "Please Choose Enter Search Term Or Choose A Filter");
                    Focus();
                    DataModel.ClearSearchResults();
                    return;
                }

                var searchResult = await progressDialogHelper.Do(searchFunc, "Search In Progress", true, false);

                switch (searchResult.Status)
                {
                    case ProgressResult.JiraHelperStatus.Cancelled:
                        DataModel.ClearSearchResults();
                        return;
                    case ProgressResult.JiraHelperStatus.Errored:
                        throw new Exception();
                    case ProgressResult.JiraHelperStatus.Success:
                        if (searchResult.RetVal.Any())
                        {
                            DataModel.UpdateSearchResults(searchResult.RetVal);
                        }
                        else
                        {
                            await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "No Results", "Your Search Returned No Results");
                            Focus();
                            DataModel.ClearSearchResults();
                        }
                        break;
                }
            }
            catch (Exception)
            {
                await DialogCoordinator.Instance.ShowMessageAsync(modelHelpers.DialogContext, "No Results", "There Was An Error Getting Search Results");
                Focus();
                DataModel.ClearSearchResults();
            }
        }