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;
}
}