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();
}
}