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);
        }
Exemple #4
0
        // 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
                });
            }
        }