private ActionResult TryRedirect(string filter, EntryType searchType) { var matchMode = NameMatchMode.Auto; filter = FindHelpers.GetMatchModeAndQueryForSearch(filter, ref matchMode); switch (searchType) { case EntryType.Undefined: { var result = services.Find(filter, 1, true); if (result.OnlyOneItem) { if (result.Albums.TotalCount == 1) { return(RedirectToAlbum(result.Albums.Items[0].Id)); } if (result.Artists.TotalCount == 1) { return(RedirectToArtist(result.Artists.Items[0].Id)); } if (result.Songs.TotalCount == 1) { return(RedirectToSong(result.Songs.Items[0].Id)); } if (result.Tags.TotalCount == 1) { return(RedirectToAction("Details", "Tag", new { id = result.Tags.Items[0].Name })); } } } break; case EntryType.Artist: var artist = artistService.FindArtists(new ArtistQueryParams(filter, null, 0, 2, false, false, matchMode, ArtistSortRule.None, false)); if (artist.Items.Length == 1) { return(RedirectToArtist(artist.Items[0].Id)); } break; case EntryType.Album: var album = albumService.Find(new AlbumQueryParams(filter, DiscType.Unknown, 0, 2, false, false, matchMode, AlbumSortRule.None, false)); if (album.Items.Length == 1) { return(RedirectToAlbum(album.Items[0].Id)); } break; case EntryType.Song: var song = songService.Find(new SongQueryParams(filter, null, 0, 2, false, false, matchMode, SongSortRule.None, false, false, null)); if (song.Items.Length == 1) { return(RedirectToSong(song.Items[0].Id)); } break; default: { var action = "Index"; var controller = searchType.ToString(); return(RedirectToAction(action, controller, new { filter })); } } return(null); }
public AllEntriesSearchResult FindAll(string term, int maxResults) { return(otherService.Find(term, maxResults, true)); }