Exemplo n.º 1
0
        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]))));
            }
        }
Exemplo n.º 2
0
        public TranslatedAlbumContract(Album album)
            : base(album, ContentLanguagePreference.Default)
        {
            TranslatedArtistString = TranslatedStringWithDefault.Create(n => album.ArtistString[n]);

            Names = new BasicNameManager(album.Names);
        }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
        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)
            };
        }
Exemplo n.º 6
0
        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]))));
            }
        }