예제 #1
0
        public void Execute(MissingAlbumSearchCommand message)
        {
            List <Album> albums;

            if (message.ArtistId.HasValue)
            {
                int artistId = message.ArtistId.Value;

                var pagingSpec = new PagingSpec <Album>
                {
                    Page          = 1,
                    PageSize      = 100000,
                    SortDirection = SortDirection.Ascending,
                    SortKey       = "Id"
                };

                pagingSpec.FilterExpressions.Add(v => v.Monitored == true && v.Artist.Value.Monitored == true);

                albums = _albumService.AlbumsWithoutFiles(pagingSpec).Records.Where(e => e.ArtistId.Equals(artistId)).ToList();
            }

            else
            {
                var pagingSpec = new PagingSpec <Album>
                {
                    Page          = 1,
                    PageSize      = 100000,
                    SortDirection = SortDirection.Ascending,
                    SortKey       = "Id"
                };

                pagingSpec.FilterExpressions.Add(v => v.Monitored == true && v.Artist.Value.Monitored == true);

                albums = _albumService.AlbumsWithoutFiles(pagingSpec).Records.ToList();
            }

            var queue   = _queueService.GetQueue().Where(q => q.Album != null).Select(q => q.Album.Id);
            var missing = albums.Where(e => !queue.Contains(e.Id)).ToList();

            SearchForMissingAlbums(missing, message.Trigger == CommandTrigger.Manual);
        }