Ejemplo n.º 1
0
        /// <summary>
        /// Loads the by identifier.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <returns></returns>
        public static Role LoadById(int id)
        {
            using (var rockContext = new RockContext())
            {
                var securityGroupType   = GroupTypeCache.Read(Rock.SystemGuid.GroupType.GROUPTYPE_SECURITY_ROLE.AsGuid(), rockContext);
                int securityGroupTypeId = securityGroupType != null ? securityGroupType.Id : 0;

                Rock.Model.GroupService       groupService       = new Rock.Model.GroupService(rockContext);
                Rock.Model.GroupMemberService groupMemberService = new Rock.Model.GroupMemberService(rockContext);
                Rock.Model.Group groupModel = groupService.Get(id);

                if (groupModel != null && (groupModel.IsSecurityRole == true || groupModel.GroupTypeId == securityGroupTypeId))
                {
                    var role = new Role();
                    role.Id     = groupModel.Id;
                    role.Name   = groupModel.Name;
                    role.People = new ConcurrentDictionary <Guid, bool>();

                    var groupMembersQry = groupMemberService.Queryable().Where(a => a.GroupId == groupModel.Id);

                    // Add the members
                    foreach (var personGuid in groupMembersQry
                             .Where(m => m.GroupMemberStatus == Model.GroupMemberStatus.Active)
                             .Select(m => m.Person.Guid)
                             .ToList()
                             .Distinct())
                    {
                        role.People.TryAdd(personGuid, true);
                    }

                    role.IsSecurityTypeGroup = groupModel.GroupTypeId == securityGroupTypeId;

                    return(role);
                }
            }

            return(null);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Loads the by identifier.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <returns></returns>
        public static Role LoadById( int id )
        {
            using ( var rockContext = new RockContext() )
            {
                var securityGroupType = GroupTypeCache.Read( Rock.SystemGuid.GroupType.GROUPTYPE_SECURITY_ROLE.AsGuid(), rockContext );
                int securityGroupTypeId = securityGroupType != null ? securityGroupType.Id : 0;

                Rock.Model.GroupService groupService = new Rock.Model.GroupService( rockContext );
                Rock.Model.GroupMemberService groupMemberService = new Rock.Model.GroupMemberService( rockContext );
                Rock.Model.Group groupModel = groupService.Get( id );

                if ( groupModel != null && groupModel.IsActive && ( groupModel.IsSecurityRole == true || groupModel.GroupTypeId == securityGroupTypeId ) )
                {
                    var role = new Role();
                    role.Id = groupModel.Id;
                    role.Name = groupModel.Name;
                    role.People = new ConcurrentDictionary<Guid,bool>();

                    var groupMembersQry = groupMemberService.Queryable().Where( a => a.GroupId == groupModel.Id );

                    // Add the members
                    foreach ( var personGuid in groupMembersQry
                        .Where( m => m.GroupMemberStatus == Model.GroupMemberStatus.Active )
                        .Select( m => m.Person.Guid )
                        .ToList()
                        .Distinct() )
                    {
                        role.People.TryAdd( personGuid, true );
                    }

                    role.IsSecurityTypeGroup = groupModel.GroupTypeId == securityGroupTypeId;

                    return role;
                }
            }

            return null;
        }