コード例 #1
0
ファイル: SongForApiContract.cs プロジェクト: Shyany/vocadb
        public SongForApiContract(Song song, SongMergeRecord mergeRecord, ContentLanguagePreference languagePreference, SongOptionalFields fields)
        {
            ArtistString        = song.ArtistString[languagePreference];
            CreateDate          = song.CreateDate;
            DefaultName         = song.DefaultName;
            DefaultNameLanguage = song.Names.SortNames.DefaultLanguage;
            FavoritedTimes      = song.FavoritedTimes;
            Id            = song.Id;
            LengthSeconds = song.LengthSeconds;
            Name          = song.Names.SortNames[languagePreference];
            PublishDate   = song.PublishDate;
            PVServices    = song.PVServices;
            RatingScore   = song.RatingScore;
            SongType      = song.SongType;
            Status        = song.Status;
            Version       = song.Version;

            if (fields.HasFlag(SongOptionalFields.AdditionalNames))
            {
                AdditionalNames = song.Names.GetAdditionalNamesStringForLanguage(languagePreference);
            }

            if (fields.HasFlag(SongOptionalFields.Albums))
            {
                Albums = song.OnAlbums.Select(a => new AlbumContract(a, languagePreference)).ToArray();
            }

            if (fields.HasFlag(SongOptionalFields.Artists))
            {
                Artists = song.Artists.Select(a => new ArtistForSongContract(a, languagePreference)).ToArray();
            }

            if (fields.HasFlag(SongOptionalFields.Lyrics))
            {
                Lyrics = song.Lyrics.Select(l => new LyricsForSongContract(l)).ToArray();
            }

            if (fields.HasFlag(SongOptionalFields.MainPicture))
            {
                var thumb = song.GetThumbUrl();

                if (!string.IsNullOrEmpty(thumb))
                {
                    MainPicture = new EntryThumbForApiContract {
                        UrlThumb = thumb
                    };
                }
            }

            if (fields.HasFlag(SongOptionalFields.Names))
            {
                Names = song.Names.Select(n => new LocalizedStringContract(n)).ToArray();
            }

            if (song.HasOriginalVersion)
            {
                OriginalVersionId = song.OriginalVersion.Id;
            }

            if (fields.HasFlag(SongOptionalFields.PVs))
            {
                PVs = song.PVs.Select(p => new PVContract(p)).ToArray();
            }

            if (fields.HasFlag(SongOptionalFields.ReleaseEvent) && song.ReleaseEvent != null)
            {
                ReleaseEvent = new ReleaseEventForApiContract(song.ReleaseEvent, languagePreference, ReleaseEventOptionalFields.None, null, true);
            }

            if (fields.HasFlag(SongOptionalFields.Tags))
            {
                Tags = song.Tags.ActiveUsages.Select(u => new TagUsageForApiContract(u, languagePreference)).ToArray();
            }

            if (fields.HasFlag(SongOptionalFields.ThumbUrl))
            {
                ThumbUrl = song.GetThumbUrl();
            }

            if (fields.HasFlag(SongOptionalFields.WebLinks))
            {
                WebLinks = song.WebLinks.Select(w => new WebLinkForApiContract(w)).ToArray();
            }

            if (mergeRecord != null)
            {
                MergedTo = mergeRecord.Target.Id;
            }
        }
コード例 #2
0
 public VenueLinkOrVenueNameViewModel(ReleaseEventForApiContract @event)
 {
     Event = @event;
 }