private List <Artist> FilterDeeperThenArtist(bool includeGenre) { var tmpArtists = allArtists.Where(a => a.Name.ToUpper().Contains(ArtistFilter.ToUpper())).ToList(); var finalList = new List <Artist>(); foreach (var a in tmpArtists) { ResetHighlight(a); var query = a.Albums. Where(al => al.Name.ToUpper().Contains(AlbumFilter.ToUpper())); if (includeGenre) { query = query.Where(al => al.Genres.Contains(new Genre() { Name = GenreFilter }, new GenreByNameComparer())); } if (query.Count() > 0) { finalList.Add(a); } foreach (var ma in query) { ((TreeTag)ma.OptionalTag).IsHighlighted = true; } } return(finalList); }
private void OnFilterChanged(FilterType ft) { if (Artists == null) { return; } switch (ft) { case FilterType.Artist: { Artists = allArtists.Where(a => a.Name.ToUpper().Contains(ArtistFilter.ToUpper())); foreach (var a in Artists) { ResetHighlight(a); } } break; case FilterType.Album: Artists = FilterDeeperThenArtist(false); break; case FilterType.Genre: Artists = FilterDeeperThenArtist(true); break; } }
/// <summary> /// Configures artists list query /// </summary> /// <param name="filter">artist filter</param> /// <returns>configured query</returns> private IQuery <ArtistDTO> GetQuery(ArtistFilter filter) { var query = artistListQuery; query.ClearSortCriterias(); query.Filter = filter; return(query); }
// Filter and OrderBy Private Functions private List <Expression <Func <Artist, bool> > > ArtistFilterExpressions(ArtistFilter filter) { List <Expression <Func <Artist, bool> > > filters = new List <Expression <Func <Artist, bool> > >(); if (filter != null) { if (filter.ArtistId != null) { filters.Add((s => s.ArtistId == filter.ArtistId)); } if (!string.IsNullOrEmpty(filter.Name)) { filters.Add((s => s.Name == filter.Name)); } } return(filters); }
public ArtistListQueryResultDTO ListAllArtists(ArtistFilter filter, int requiredPage = 1) { using (UnitOfWorkProvider.Create()) { var query = GetQuery(filter); query.Skip = Math.Max(0, requiredPage - 1) * PageSize; query.Take = PageSize; var sortOrder = filter.SortAscending ? SortDirection.Ascending : SortDirection.Descending; query.AddSortCriteria(artist => artist.Name, sortOrder); return(new ArtistListQueryResultDTO { RequestedPage = requiredPage, TotalResultCount = query.GetTotalRowCount(), ResultsPage = query.Execute(), Filter = filter }); } }