public void ChangeSort(ArtistSort sort) { ViewSource = new CollectionViewSource { IsSourceGrouped = true }; switch (sort) { case ArtistSort.AtoZ: ViewSource.Source = _libraryCollectionService.ArtistsByName; break; default: throw new ArgumentOutOfRangeException(nameof(sort), sort, null); } }
public ActionResult SearchResults(string NameSearchString, Int32[] SelectedGenres, ArtistSort SelectedSort, SongsController.SortOrder SelectedSortOrder /*, TODO: Add parameter for Rating, once that is set up*/) { List <Artist> SelectedArtists = new List <Artist>(); List <Artist> AllArtists = db.Artists.ToList(); var query = from a in db.Artists select a; var qtest = query; if (NameSearchString != null && NameSearchString != "") { query = query.Where(a => a.ArtistName.Contains(NameSearchString)); } if (qtest != query) { SelectedArtists = query.ToList(); } //TODO: Add rating search once that functionality is live List <Artist> ArtistInGenre; if (SelectedGenres != null) { foreach (int id in SelectedGenres) { Genre genre = db.Genres.Find(id); ArtistInGenre = query.Where(a => a.Genres.Any(g => g.GenreID.Equals(id))).ToList(); foreach (Artist a in ArtistInGenre) { if (SelectedArtists.Contains(a) == false) { SelectedArtists.Add(a); } } } } if (SelectedArtists.Count == 0) { SelectedArtists = db.Artists.ToList(); } switch (SelectedSort) { case ArtistSort.Name: SelectedArtists = SelectedArtists.OrderBy(s => s.ArtistName).ToList(); break; //TODO: Add song sort by rating case once that funtionality is live //case SongSort.Rating: //; break; } switch (SelectedSortOrder) { case SongsController.SortOrder.Ascending: SelectedArtists = SelectedArtists; break; case SongsController.SortOrder.Descending: SelectedArtists.Reverse(); break; } ViewBag.ArtistsCount = CountArtists(SelectedArtists); ViewBag.TotalArtistsCount = CountArtists(AllArtists); ViewBag.AllGenres = GetAllGenres(); return(View("Index", SelectedArtists)); }