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;

		}
Example #2
0
        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);
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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;
        }