public ArtistForApiContractOld(Artist artist, ArtistMergeRecord mergeRecord, ContentLanguagePreference languagePreference) : base(artist, languagePreference) { CreateDate = artist.CreateDate; Description = artist.Description; Groups = artist.Groups.Select(g => new ArtistContract(g.Group, languagePreference)).ToArray(); Members = artist.Members.Select(m => new ArtistContract(m.Member, languagePreference)).ToArray(); Tags = artist.Tags.Usages.Select(u => new TagUsageContract(u)).ToArray(); WebLinks = artist.WebLinks.Select(w => new ArchivedWebLinkContract(w)).ToArray(); if (mergeRecord != null) MergedTo = mergeRecord.Target.Id; }
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); }
public ArtistForApiContractOld(Artist artist, ArtistMergeRecord mergeRecord, ContentLanguagePreference languagePreference) : base(artist, languagePreference) { CreateDate = artist.CreateDate; Description = artist.Description; Groups = artist.Groups.Select(g => new ArtistContract(g.Group, languagePreference)).ToArray(); Members = artist.Members.Select(m => new ArtistContract(m.Member, languagePreference)).ToArray(); Tags = artist.Tags.Usages.Select(u => new TagUsageContract(u)).ToArray(); WebLinks = artist.WebLinks.Select(w => new ArchivedWebLinkContract(w)).ToArray(); if (mergeRecord != null) { MergedTo = mergeRecord.Target.Id; } }
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 void Merge(int sourceId, int targetId) { PermissionContext.VerifyPermission(PermissionToken.MergeEntries); if (sourceId == targetId) { throw new ArgumentException("Source and target artists can't be the same", "targetId"); } HandleTransaction(session => { var source = session.Load <Artist>(sourceId); var target = session.Load <Artist>(targetId); AuditLog(string.Format("Merging {0} to {1}", EntryLinkFactory.CreateEntryLink(source), EntryLinkFactory.CreateEntryLink(target)), session); NHibernateUtil.Initialize(source.Picture); NHibernateUtil.Initialize(target.Picture); foreach (var n in source.Names.Names.Where(n => !target.HasName(n))) { var name = target.CreateName(n.Value, n.Language); session.Save(name); } foreach (var w in source.WebLinks.Where(w => !target.HasWebLink(w.Url))) { var link = target.CreateWebLink(w.Description, w.Url, w.Category); session.Save(link); } var groups = source.Groups.Where(g => !target.HasGroup(g.Parent)).ToArray(); foreach (var g in groups) { g.MoveToMember(target); session.Update(g); } var members = source.Members.Where(m => !m.Member.HasGroup(target)).ToArray(); foreach (var m in members) { m.MoveToGroup(target); session.Update(m); } var albums = source.Albums.Where(a => !target.HasAlbum(a.Album)).ToArray(); foreach (var a in albums) { a.Move(target); session.Update(a); } var songs = source.Songs.Where(s => !target.HasSong(s.Song)).ToArray(); foreach (var s in songs) { s.Move(target); session.Update(s); } var ownerUsers = source.OwnerUsers.Where(s => !target.HasOwnerUser(s.User)).ToArray(); foreach (var u in ownerUsers) { u.Move(target); session.Update(u); } var pictures = source.Pictures.ToArray(); foreach (var p in pictures) { p.Move(target); session.Update(p); } var users = source.Users.ToArray(); foreach (var u in users) { u.Move(target); session.Update(u); } target.Description.CopyIfEmpty(source.Description); // Create merge record var mergeEntry = new ArtistMergeRecord(source, target); session.Save(mergeEntry); source.Deleted = true; Archive(session, source, ArtistArchiveReason.Deleted, string.Format("Merged to {0}", target)); Archive(session, target, ArtistArchiveReason.Merged, string.Format("Merged from '{0}'", source)); NHibernateUtil.Initialize(source.Picture); NHibernateUtil.Initialize(target.Picture); session.Update(source); session.Update(target); }); }
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; }