public static TranslatedStringWithDefault GetArtistString(IEnumerable <IArtistWithSupport> artists, bool isAnimation) { ParamIs.NotNull(() => artists); var matched = artists.Where(IsValidCreditableArtist).ToArray(); var producers = matched.Where(a => IsProducerRole(a, isAnimation)).ToArray(); var performers = matched.Where(a => GetCategories(a).HasFlag(ArtistCategories.Vocalist) && !producers.Contains(a)).ToArray(); const string various = "Various artists"; if (producers.Count() >= 4 || (!producers.Any() && performers.Count() >= 4)) { return(new TranslatedStringWithDefault(various, various, various, various)); } var performerNames = performers.Select(GetTranslatedName); var producerNames = producers.Select(GetTranslatedName); if (producers.Any() && performers.Any() && producers.Count() + performers.Count() >= 5) { return(TranslatedStringWithDefault.Create(lang => string.Format("{0} feat. various", string.Join(", ", producerNames.Select(p => p[lang]))))); } else if (producers.Any() && performers.Any()) { return(TranslatedStringWithDefault.Create(lang => string.Format("{0} feat. {1}", string.Join(", ", producerNames.Select(p => p[lang])), string.Join(", ", performerNames.Select(p => p[lang]))))); } else { return(TranslatedStringWithDefault.Create(lang => string.Join(", ", (producers.Any() ? producers : performers).Select(a => GetTranslatedName(a)[lang])))); } }
public TranslatedAlbumContract(Album album) : base(album, ContentLanguagePreference.Default) { TranslatedArtistString = TranslatedStringWithDefault.Create(n => album.ArtistString[n]); Names = new BasicNameManager(album.Names); }
public Song() { ArtistString = new TranslatedStringWithDefault(string.Empty, string.Empty, string.Empty, string.Empty); CreateDate = DateTime.Now; Deleted = false; Notes = string.Empty; PVServices = PVServices.Nothing; SongType = SongType.Unspecified; Status = EntryStatus.Draft; }
public Album() { ArtistString = new TranslatedStringWithDefault(string.Empty, string.Empty, string.Empty, string.Empty); CreateDate = DateTime.Now; Deleted = false; Description = new EnglishTranslatedString(); DiscType = DiscType.Album; OriginalRelease = new AlbumRelease(); Status = EntryStatus.Draft; }
public TranslatedAlbumContract(Album album) : base(album, ContentLanguagePreference.Default) { TranslatedArtistString = TranslatedStringWithDefault.Create(n => album.ArtistString[n]); var names = album.Names.Select(n => new LocalizedStringWithId(n.Value, n.Language)).ToArray(); Names = new NameManager <LocalizedStringWithId> { Names = names, SortNames = new TranslatedString(album.Names.SortNames) }; }
public TranslatedStringWithDefault GetArtistString(IEnumerable <IArtistLinkWithRoles> artists, ContentFocus focus) { ParamIs.NotNull(() => artists); var matched = artists.Where(ArtistHelper.IsValidCreditableArtist).ToArray(); var producers = matched .Where(a => ArtistHelper.IsProducerRole(a, focus)) .OrderBy(a => GetSortOrderForArtistString(a, focus)) .ToArray(); var performers = matched .Where(a => ArtistHelper.GetCategories(a).HasFlag(ArtistCategories.Vocalist) && (!producers.Contains(a) || allowRepeatingProducerAsPerformer) && (a.Roles.HasFlag(ArtistRoles.Vocalist) || !a.Roles.HasFlag(ArtistRoles.Chorus))) .ToArray(); const string various = ArtistHelper.VariousArtists; if (producers.Length >= 4 || (!producers.Any() && performers.Length >= 4)) { return(new TranslatedStringWithDefault(various, various, various, various)); } var performerNames = performers.Select(ArtistHelper.GetTranslatedName); var producerNames = producers.Select(ArtistHelper.GetTranslatedName); if (producers.Any() && performers.Length > 2 && producers.Length + performers.Length >= 5) { return(TranslatedStringWithDefault.Create(lang => string.Format("{0} feat. various", string.Join(", ", producerNames.Select(p => p[lang]))))); } else if (producers.Any() && performers.Any()) { return(TranslatedStringWithDefault.Create(lang => string.Format("{0} feat. {1}", string.Join(", ", producerNames.Select(p => p[lang])), string.Join(", ", performerNames.Select(p => p[lang]))))); } else { return(TranslatedStringWithDefault.Create(lang => string.Join(", ", (producers.Any() ? producers : performers).Select(a => ArtistHelper.GetTranslatedName(a)[lang])))); } }