Example #1
0
        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;
            }));
        }
Example #2
0
        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;
            }));
        }