Ejemplo n.º 1
0
        public IEnumerable <SubdivisionPermissionNode> GetAllSubdivisionEntityPermissions(IUnitOfWork uow, int subdivisionId, IPermissionExtensionStore permissionExtensionStore)
        {
            var basePermission = uow.Session.QueryOver <EntitySubdivisionOnlyPermission>()
                                 .Where(x => x.Subdivision.Id == subdivisionId)
                                 .List();

            foreach (var item in basePermission)
            {
                var node = new SubdivisionPermissionNode();
                node.EntitySubdivisionOnlyPermission = item;
                node.TypeOfEntity             = item.TypeOfEntity;
                node.EntityPermissionExtended = new List <EntitySubdivisionPermissionExtended>();
                foreach (var extension in permissionExtensionStore.PermissionExtensions)
                {
                    EntitySubdivisionPermissionExtended permissionExtendedAlias = null;

                    var permission = uow.Session.QueryOver(() => permissionExtendedAlias)
                                     .Where(x => x.Subdivision.Id == subdivisionId)
                                     .And(() => permissionExtendedAlias.PermissionId == extension.PermissionId)
                                     .And(x => x.TypeOfEntity.Id == node.TypeOfEntity.Id)
                                     .Take(1)?.List()?.FirstOrDefault();

                    if (permission != null)
                    {
                        node.EntityPermissionExtended.Add(permission);
                        continue;
                    }

                    permission = new EntitySubdivisionPermissionExtended();
                    permission.IsPermissionAvailable = null;
                    permission.PermissionId          = extension.PermissionId;
                    permission.Subdivision           = item.Subdivision;
                    permission.TypeOfEntity          = item.TypeOfEntity;
                    node.EntityPermissionExtended.Add(permission);
                }

                yield return(node);
            }
        }
Ejemplo n.º 2
0
        public void AddPermission(TypeOfEntity entityNode)
        {
            if (entityNode == null)
            {
                return;
            }

            ObservableTypeOfEntitiesList.Remove(entityNode);
            SubdivisionPermissionNode savedPermission;
            var foundOriginalPermission = originalPermissionList.FirstOrDefault(x => x.TypeOfEntity == entityNode);

            if (foundOriginalPermission == null)
            {
                savedPermission = new SubdivisionPermissionNode();
                savedPermission.EntitySubdivisionOnlyPermission = new EntitySubdivisionOnlyPermission {
                    Subdivision  = subdivision,
                    TypeOfEntity = entityNode
                };
                savedPermission.EntityPermissionExtended = new List <EntitySubdivisionPermissionExtended>();
                foreach (var item in ExtensionStore.PermissionExtensions)
                {
                    var node = new EntitySubdivisionPermissionExtended();
                    node.Subdivision  = subdivision;
                    node.TypeOfEntity = entityNode;
                    node.PermissionId = item.PermissionId;
                    savedPermission.EntityPermissionExtended.Add(node);
                }
                savedPermission.TypeOfEntity = entityNode;
                PermissionListViewModel.PermissionsList.Add(savedPermission);
            }
            else
            {
                savedPermission = foundOriginalPermission;
                PermissionListViewModel.PermissionsList.Add(savedPermission);
            }
        }