public RoleMap GetRolesVisibleForUser(int userId) { return(m_cache.ReadThrough($"rolemap_{m_session.Project.Id}_rolesvisiblefor_{userId}", TimeSpan.FromHours(24), () => { var allRoles = GetProjectRoles(); var userRoles = GetRoleIdsOfUser(userId); var visibleRoles = new List <RoleMapNode>(); foreach (var rId in userRoles) { var r = allRoles.FindRole(rId); if (r == null) { continue; } visibleRoles.Add(r); } var submap = new RoleMap(); submap.Import(visibleRoles); return submap; })); }
public RoleMap GetProjectRoles() { return(m_cache.ReadThrough($"rolemap_{m_session.Project.Id}", TimeSpan.FromHours(24), () => { var allRoles = new List <RoleMapNode>(); var roles = m_database.SelectFrom <IUserRole>().Join(ur => ur.Members) .Where(ur => ur.ProjectId == m_session.Project.Id).Execute(); foreach (var role in roles) { var model = new RoleMapNode { Id = role.Id, Name = role.Name, ParentRoleId = role.ParentRoleId }; model.MemberUserIds.AddRange(role.Members.Select(m => m.MemberId)); allRoles.Add(model); } var map = new RoleMap(); map.Import(allRoles); return map; })); }