示例#1
0
        public SongListBaseContract[] GetSongListsForCurrentUser(int ignoreSongId)
        {
            PermissionContext.VerifyLogin();

            var canEditPools = PermissionContext.HasPermission(PermissionToken.EditFeaturedLists);

            return(HandleQuery(session =>
            {
                var ignoredLists = session
                                   .Query <SongInList>()
                                   .Where(sil => sil.Song.Id == ignoreSongId)
                                   .Select(sil => sil.List.Id)
                                   .Distinct()
                                   .ToArray();

                return session.Query <SongList>()
                .WhereNotDeleted()
                .Where(l => !ignoredLists.Contains(l.Id) &&
                       ((l.Author.Id == PermissionContext.LoggedUser.Id && l.FeaturedCategory == SongListFeaturedCategory.Nothing) ||
                        (canEditPools && l.FeaturedCategory == SongListFeaturedCategory.Pools)))
                .OrderBy(l => l.Name)
                .ToArray()
                .Select(l => new SongListBaseContract(l))
                .ToArray();
            }));
        }
示例#2
0
        public ActionResult Find(string query)
        {
            var result = Service.Find(query);

            if (result.EventId != 0)
            {
                if (result.EventName != query && PermissionContext.HasPermission(PermissionToken.ManageDatabase))
                {
                    albumService.UpdateAllReleaseEventNames(query, result.EventName);
                }

                return(RedirectToAction("Details", new { id = result.EventId }));
            }

            return(View(result));
        }
示例#3
0
        public SongListBaseContract[] GetSongListsForCurrentUser(int ignoreSongId)
        {
            PermissionContext.VerifyLogin();

            var canEditPools = PermissionContext.HasPermission(PermissionToken.EditFeaturedLists);

            return(HandleQuery(session => {
                var ignoredSong = session.Load <Song>(ignoreSongId);

                return session.Query <SongList>()
                .Where(l => (l.Author.Id == PermissionContext.LoggedUser.Id && l.FeaturedCategory == SongListFeaturedCategory.Nothing) ||
                       (canEditPools && l.FeaturedCategory == SongListFeaturedCategory.Pools))
                .OrderBy(l => l.Name).ToArray()
                .Where(l => !ignoredSong.ListLinks.Any(i => i.List.Equals(l)))
                .Select(l => new SongListBaseContract(l)).ToArray();
            }));
        }
示例#4
0
        public void UpdateTopic(int topicId, DiscussionTopicContract contract)
        {
            PermissionContext.VerifyPermission(PermissionToken.CreateComments);

            repository.HandleTransaction(ctx => {
                var topic = ctx.OfType <DiscussionTopic>().Load(topicId);

                PermissionContext.VerifyAccess(topic, EntryPermissionManager.CanEdit);

                if (topic.Folder.Id != contract.FolderId && PermissionContext.HasPermission(PermissionToken.DeleteComments))
                {
                    MoveTopic(ctx, topic, contract.FolderId);
                }

                topic.Name    = contract.Name;
                topic.Content = contract.Content;

                ctx.Update(topic);
                ctx.AuditLogger.AuditLog("updated " + topic);
            });
        }