public void CreateServiceAuthorizationStruct(IAuthorization authorization, string serviceName) { if (authorization == null) throw new ArgumentNullException("authorization"); foreach (Structure structure in _dbContext.Structures) { var structureContext = structure; var containers = _dbContext.Containers.Where((c) => c.ContainerPrototype.StructureId == structureContext.Id); foreach (Container container in containers) { CreateGroups(authorization, structure.Id, container.Id); foreach (WorkSpaceType workSpaceType in container.ContainerPrototype.WorkSpaceTypes) { var containerContext = container; var workSpaceTypeContext = workSpaceType; var rootName = authorization.GetContainerName(structure.Id, container.Id, workSpaceType.Name); authorization.CreateContainer(rootName); var roles = _dbContext.Roles.Where( (r) => r.ContainerPrototypeStructureId == structureContext.Id && r.WorkSpaceTypeStructureId == structureContext.Id && r.WorkSpaceTypeName == workSpaceTypeContext.Name && r.ContainerPrototypeName == containerContext.ContainerPrototype.Name ); SetCurrentAndParentRoleTypes(authorization, structure, container, rootName, serviceName, roles); SetChildsRoleTypes(authorization, structure, container, rootName, serviceName, roles); } } } authorization.Dispose(); }