public List <int> GetForumIdsWhereUserCanNot(int userGroupId, VBForumFlags flags, bool onlyParentCategories = false) { var forumIds = BuildForumPermissionQuery(userGroupId, flags, negate: true, onlyParentCategories, selectOnlyForumId: true) .Select(f => f.Id) .ToList(); return(forumIds); }
public async Task <bool> UserCanInForum(int forumId, VBUserGroup userGroup, VBForumFlags flags) { // Since we only check if the user has permission, writing and tracking is never required here var forum = await GetForumsQuery().FirstOrDefaultAsync(f => f.Id == forumId); var highestPermission = FetchHighestPermissionFlagForUser(forum, userGroup); return(highestPermission.HasFlag(flags)); }
public async Task <List <VBForum> > GetCategoriesWhereUserCanAsync(VBUserGroup userGroup, VBForumFlags flags = VBForumFlags.CanViewForum | VBForumFlags.CanViewThreads) { var forums = await GetForumsWhereUserCanAsync(userGroup, flags); var categories = forums.Where(f => f.ParentId == -1) .ToList(); return(categories); }
public async Task <Dictionary <VBForum, List <int> > > GetCategoriesWithChildIdsAsync(VBUserGroup userGroup, VBForumFlags flags = VBForumFlags.CanViewForum | VBForumFlags.CanViewThreads) { var forums = await GetCategoriesWhereUserCanAsync(userGroup, flags); var forumsWithChilds = forums.Select(f => new { Forum = f, Childs = new List <int>(f.ChildList) { f.Id } }).GroupBy(x => x.Forum) .ToDictionary(kvp => kvp.Key, kvp => kvp.SelectMany(x => x.Childs).ToList()); return(forumsWithChilds); }
public VBForumPermission(int forumPermissionRaw) { Flag = (VBForumFlags)forumPermissionRaw; }
/// <summary> /// Neogation of GetForumswhereUserCan(): It returns all forums where the group doesn't have the provided flag /// </summary> /// <param name="onlyParentCategories">If false, all forums will be fetched (default). Set this to true if you only want to get categories (parent = -1).</param> public List <VBLightForum> GetForumsWhereUserCanNot(int userGroupId, VBForumFlags flags, bool onlyParentCategories = false) { return(BuildForumPermissionQuery(userGroupId, flags, negate: true, onlyParentCategories)); }