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(); })); }
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)); }
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(); })); }
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); }); }