public virtual ArchivedSongVersion CreateArchivedVersion(XDocument data, SongDiff diff, AgentLoginData author, SongArchiveReason reason, string notes) { var archived = new ArchivedSongVersion(this, data, diff, author, Version, Status, reason, notes); ArchivedVersionsManager.Add(archived); Version++; return(archived); }
public ArchivedSongVersion(Song song, XDocument data, SongDiff diff, AgentLoginData author, int version, EntryStatus status, SongArchiveReason reason, string notes) : base(data, author, version, status, notes) { ParamIs.NotNull(() => data); Song = song; Diff = diff; Reason = reason; }
public ArchivedSongContract(Song song, SongDiff diff) { ParamIs.NotNull(() => song); ParamIs.NotNull(() => diff); Artists = (diff.IncludeArtists ? song.Artists.Select(a => new ArchivedArtistForSongContract(a)).ToArray() : null); Id = song.Id; Lyrics = (diff.IncludeLyrics ? song.Lyrics.Select(l => new LyricsForSongContract(l)).ToArray() : null); Names = (diff.IncludeNames ? song.Names.Names.Select(n => new LocalizedStringContract(n)).ToArray() : null); NicoId = song.NicoId; Notes = song.Notes; OriginalVersion = (song.OriginalVersion != null ? new ObjectRefContract(song.OriginalVersion) : null); PVs = (diff.IncludePVs ? song.PVs.Select(p => new ArchivedPVContract(p)).ToArray() : null); SongType = song.SongType; TranslatedName = new ArchivedTranslatedStringContract(song.TranslatedName); WebLinks = (diff.IncludeWebLinks ? song.WebLinks.Select(l => new ArchivedWebLinkContract(l)).ToArray() : null); }
private bool AcceptImportedSong(ISession session, Album album, InspectedTrack inspectedTrack, ContentLanguageSelection languageSelection, int[] selectedSongIds) { Song song = null; var diff = new SongDiff(false); if (NewTrack(inspectedTrack, selectedSongIds, album)) { song = new Song(new LocalizedString(inspectedTrack.ImportedTrack.Title, languageSelection)); session.Save(song); album.AddSong(song, inspectedTrack.ImportedTrack.TrackNum, inspectedTrack.ImportedTrack.DiscNum); diff.Names = true; } else if (selectedSongIds.Contains(inspectedTrack.ExistingSong.Id)) { song = session.Load<Song>(inspectedTrack.ExistingSong.Id); if (!album.HasSong(song)) album.AddSong(song, inspectedTrack.ImportedTrack.TrackNum, inspectedTrack.ImportedTrack.DiscNum); var newName = inspectedTrack.ImportedTrack.Title; if (!song.Names.HasName(newName) && !song.Names.HasNameForLanguage(languageSelection)) { song.CreateName(new LocalizedString(newName, languageSelection)); diff.Names = true; } } if (song != null) { if (inspectedTrack.ImportedTrack != null) { foreach (var artistName in inspectedTrack.ImportedTrack.ArtistNames) { if (CreateArtist(session, song, artistName, ArtistRoles.Composer)) diff.Artists = true; } foreach (var artistName in inspectedTrack.ImportedTrack.VocalistNames) { if (CreateArtist(session, song, artistName, ArtistRoles.Vocalist)) diff.Artists = true; } song.UpdateArtistString(); } Services.Songs.Archive(session, song, diff, SongArchiveReason.AutoImportedFromMikuDb, string.Format("Auto-imported from MikuDB for album '{0}'", album.DefaultName)); session.Update(song); return true; } return false; }