Example #1
0
        public ArtistRelationsForApi GetRelations(Artist artist, ArtistRelationsFields fields)
        {
            var contract = new ArtistRelationsForApi();

            if (fields.HasFlag(ArtistRelationsFields.LatestAlbums))
            {
                contract.LatestAlbums = GetLatestAlbums(ctx, artist);
            }

            if (fields.HasFlag(ArtistRelationsFields.PopularAlbums))
            {
                var latestAlbumIds = contract.LatestAlbums != null?contract.LatestAlbums.Select(a => a.Id).ToArray() : new int[0];

                contract.PopularAlbums = GetTopAlbums(ctx, artist, latestAlbumIds);
            }

            if (fields.HasFlag(ArtistRelationsFields.LatestSongs))
            {
                contract.LatestSongs = GetLatestSongs(ctx, artist);
            }

            if (fields.HasFlag(ArtistRelationsFields.PopularSongs))
            {
                contract.PopularSongs = GetTopSongs(ctx, artist, contract.LatestSongs);
            }

            return(contract);
        }
Example #2
0
        public ArtistForApiContract GetOne(int id,
                                           ArtistOptionalFields fields     = ArtistOptionalFields.None,
                                           ArtistRelationsFields relations = ArtistRelationsFields.None,
                                           ContentLanguagePreference lang  = ContentLanguagePreference.Default)
        {
            var artist = queries.GetWithMergeRecord(id, (a, m, ctx) => GetArtist(a, m, fields, relations, lang, ctx));

            return(artist);
        }
Example #3
0
        private ArtistForApiContract GetArtist(Artist a, ArtistMergeRecord m,
                                               ArtistOptionalFields fields,
                                               ArtistRelationsFields relations,
                                               ContentLanguagePreference lang,
                                               IDatabaseContext <Artist> ctx)
        {
            var contract = new ArtistForApiContract(a, lang, _thumbPersister, fields);

            if (relations != ArtistRelationsFields.None)
            {
                contract.Relations = new ArtistRelationsQuery(ctx, lang, _cache, _thumbPersister).GetRelations(a, relations);
            }

            return(contract);
        }
Example #4
0
        private ArtistForApiContract GetArtist(Artist a, ArtistMergeRecord m,
                                               ArtistOptionalFields fields,
                                               ArtistRelationsFields relations,
                                               ContentLanguagePreference lang,
                                               IRepositoryContext <Artist> ctx)
        {
            var contract = new ArtistForApiContract(a, lang, thumbPersister, WebHelper.IsSSL(Request), fields);

            if (relations != ArtistRelationsFields.None)
            {
                contract.Relations = new ArtistRelationsQuery(ctx, lang).GetRelations(a, relations);
            }

            return(contract);
        }
Example #5
0
        public ArtistRelationsForApi GetRelations(Artist artist, ArtistRelationsFields fields)
        {
            var contract = new ArtistRelationsForApi();

            if (fields.HasFlag(ArtistRelationsFields.LatestAlbums))
            {
                contract.LatestAlbums = GetLatestAlbums(ctx, artist);
            }

            if (fields.HasFlag(ArtistRelationsFields.PopularAlbums))
            {
                var latestAlbumIds = contract.LatestAlbums != null?contract.LatestAlbums.Select(a => a.Id).ToArray() : new int[0];

                contract.PopularAlbums = GetTopAlbums(ctx, artist, latestAlbumIds);
            }

            var songFields = SongOptionalFields.AdditionalNames | SongOptionalFields.ThumbUrl;

            if (fields.HasFlag(ArtistRelationsFields.LatestSongs))
            {
                contract.LatestSongs = ctx.OfType <ArtistForSong>().Query()
                                       .Where(s => !s.Song.Deleted && s.Artist.Id == artist.Id && !s.IsSupport)
                                       .WhereIsMainSong(artist.ArtistType)
                                       .Select(s => s.Song)
                                       .OrderByPublishDate(SortDirection.Descending)
                                       .Take(8).ToArray()
                                       .Select(s => new SongForApiContract(s, languagePreference, songFields))
                                       .ToArray();
            }

            if (fields.HasFlag(ArtistRelationsFields.PopularSongs))
            {
                var latestSongIds = contract.LatestSongs != null?contract.LatestSongs.Select(s => s.Id).ToArray() : new int[0];

                contract.PopularSongs = ctx.OfType <ArtistForSong>().Query()
                                        .Where(s => !s.Song.Deleted && s.Artist.Id == artist.Id && !s.IsSupport &&
                                               s.Song.RatingScore > 0 && !latestSongIds.Contains(s.Song.Id))
                                        .Select(s => s.Song)
                                        .OrderByDescending(s => s.RatingScore)
                                        .Take(8).ToArray()
                                        .Select(s => new SongForApiContract(s, languagePreference, songFields))
                                        .ToArray();
            }

            return(contract);
        }
		public ArtistRelationsForApi GetRelations(Artist artist, ArtistRelationsFields fields) {
			
			var contract = new ArtistRelationsForApi();

			if (fields.HasFlag(ArtistRelationsFields.LatestAlbums)) {
				contract.LatestAlbums = GetLatestAlbums(ctx, artist);				
			}

			if (fields.HasFlag(ArtistRelationsFields.PopularAlbums)) {
				var latestAlbumIds = contract.LatestAlbums != null ? contract.LatestAlbums.Select(a => a.Id).ToArray() : new int[0];				
				contract.PopularAlbums = GetTopAlbums(ctx, artist, latestAlbumIds);
			}

			if (fields.HasFlag(ArtistRelationsFields.LatestSongs)) {

				contract.LatestSongs = ctx.OfType<ArtistForSong>().Query()
					.Where(s => !s.Song.Deleted && s.Artist.Id == artist.Id && !s.IsSupport)
					.WhereIsMainSong(artist.ArtistType)
					.Select(s => s.Song)
					.OrderByDescending(s => s.CreateDate)
					.Take(8).ToArray()
					.Select(s => new SongContract(s, languagePreference))
					.ToArray();
				
			}

			if (fields.HasFlag(ArtistRelationsFields.PopularSongs)) {
				
				var latestSongIds = contract.LatestSongs != null ? contract.LatestSongs.Select(s => s.Id).ToArray() : new int[0];

				contract.PopularSongs = ctx.OfType<ArtistForSong>().Query()
					.Where(s => !s.Song.Deleted && s.Artist.Id == artist.Id && !s.IsSupport 
						&& s.Song.RatingScore > 0 && !latestSongIds.Contains(s.Song.Id))
					.Select(s => s.Song)
					.OrderByDescending(s => s.RatingScore)
					.Take(8).ToArray()
					.Select(s => new SongContract(s, languagePreference))
					.ToArray();

			}

			return contract;

		}
        private ArtistForApiContract GetArtist(Artist a, ArtistMergeRecord m, 
            ArtistOptionalFields fields,
            ArtistRelationsFields relations,
            ContentLanguagePreference lang,
            IRepositoryContext<Artist> ctx)
        {
            var contract = new ArtistForApiContract(a, lang, thumbPersister, WebHelper.IsSSL(Request), fields);

            if (relations != ArtistRelationsFields.None) {
                contract.Relations = new ArtistRelationsQuery(ctx, lang).GetRelations(a, relations);
            }

            return contract;
        }
        public ArtistForApiContract GetOne(int id,
            ArtistOptionalFields fields = ArtistOptionalFields.None,
            ArtistRelationsFields relations = ArtistRelationsFields.None,
            ContentLanguagePreference lang = ContentLanguagePreference.Default)
        {
            var artist = queries.GetWithMergeRecord(id, (a, m, ctx) => GetArtist(a, m, fields, relations, lang, ctx));

            return artist;
        }