CodeGarten.Data.Access.UserManager.SyncronizeEnrolls C# (CSharp) Méthode

SyncronizeEnrolls() private méthode

private SyncronizeEnrolls ( Container container ) : void
container CodeGarten.Data.Model.Container
Résultat void
        internal void SyncronizeEnrolls(Container container)
        {
            var roles = _db.DbContext.Roles.Where(r => r.ContainerTypeName == container.Type.Name && r.Barrier != (int)RoleBarrier.Top);
            if (roles.Count() == 0)
                return;

            var currentContainer = container.Parent;
            while(currentContainer!=null)
            {
                var currentContext = currentContainer;
                var currentRoles = _db.DbContext.Roles.Where(
                    r => r.ContainerTypeName == currentContext.Name && r.Barrier == (int)RoleBarrier.Top);

                var rolesContext = roles = roles.Where(r => !currentRoles.Where(cr => cr.RoleTypeName == r.RoleTypeName).Any());
                if (roles.Count() == 0)
                    return;

                var enrolls = _db.DbContext.Enrolls.Where(
                                e =>    e.ContainerId == currentContext.Id &&
                                        e.Inherited == false &&
                                        rolesContext.Where(r => r.RoleTypeName == e.RoleTypeName).Any()
                                                        );
                foreach (var enroll in enrolls)
                    EnrollInherited(enroll.User, container, enroll.RoleType);

                currentContainer = currentContainer.Parent;
            }
        }