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); }
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); }
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); }
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 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; }