コード例 #1
0
ファイル: RoleController.cs プロジェクト: feilingdeng/xms
        public IActionResult EditRoleEntityPermissions(Guid roleId)
        {
            if (roleId.IsEmpty())
            {
                return(NotFound());
            }
            var entityGroups = _dataFinder.RetrieveAll("entitygroup", new List <string> {
                "name"
            }, new OrderExpression {
                AttributeName = "name", OrderType = OrderType.Ascending
            });
            EditRoleEntityPermissionsModel model = new EditRoleEntityPermissionsModel
            {
                ResourceName     = DataAuthorizationDefaults.ModuleName,
                Role             = _roleService.FindById(roleId),
                RoleId           = roleId,
                RoleObjectAccess = _roleObjectAccessService.QueryRolePermissions(roleId, DataAuthorizationDefaults.ModuleName),

                EntityPermissions = _entityPermissionService.Query(x => x
                                                                   .Sort(n => n.SortAscending(s => s.Name))
                                                                   ),
                Entities = _entityFinder.Query(x => x.Where(n => n.AuthorizationEnabled == true)
                                               .Sort(n => n.SortAscending(s => s.Name))
                                               ),
                EntityGroups = entityGroups
            };

            return(DynamicResult(model, $"~/Views/Security/{WebContext.ActionName}.cshtml"));
        }
コード例 #2
0
        public IActionResult Get([FromQuery] RetrieveEntityModel model)
        {
            FilterContainer <Schema.Domain.Entity> filter = FilterContainerBuilder.Build <Schema.Domain.Entity>();

            filter.And(x => x.OrganizationId == CurrentUser.OrganizationId);
            if (model.Name.NotEmpty())
            {
                filter.And(x => x.Name.In(model.Name));
            }
            if (model.IsAuthorization.HasValue)
            {
                filter.And(x => x.AuthorizationEnabled == model.IsAuthorization.Value);
            }
            if (model.IsCustomizable.HasValue)
            {
                filter.And(x => x.IsCustomizable == model.IsCustomizable.Value);
            }
            if (model.IsLoged.HasValue)
            {
                filter.And(x => x.LogEnabled == model.IsLoged.Value);
            }
            if (model.DuplicateEnabled.HasValue)
            {
                filter.And(x => x.DuplicateEnabled == model.DuplicateEnabled.Value);
            }
            if (model.WorkFlowEnabled.HasValue)
            {
                filter.And(x => x.WorkFlowEnabled == model.WorkFlowEnabled.Value);
            }
            if (model.BusinessFlowEnabled.HasValue)
            {
                filter.And(x => x.BusinessFlowEnabled == model.BusinessFlowEnabled.Value);
            }
            if (model.GetAll)
            {
                model.PageSize = 25000;
            }
            else if (!model.PageSizeBySeted && CurrentUser.UserSettings.PagingLimit > 0)
            {
                model.PageSize = CurrentUser.UserSettings.PagingLimit;
            }
            model.PageSize = model.PageSize > WebContext.PlatformSettings.MaxFetchRecords ? WebContext.PlatformSettings.MaxFetchRecords : model.PageSize;
            List <Schema.Domain.Entity> result;

            if (model.SolutionId.HasValue)
            {
                var pagedResult = _entityFinder.QueryPaged(x => x
                                                           .Page(1, model.PageSize)
                                                           .Where(filter), model.SolutionId.Value, true);
                result = pagedResult.Items;
            }
            else
            {
                result = _entityFinder.Query(x => x
                                             .Where(filter));
            }
            return(JOk(result));
        }
コード例 #3
0
        public IActionResult Get([FromQuery] RetrieveEntityModel model)
        {
            FilterContainer <Schema.Domain.Entity> filter = FilterContainerBuilder.Build <Schema.Domain.Entity>();

            filter.And(x => x.OrganizationId == CurrentUser.OrganizationId);
            if (model.Name.NotEmpty())
            {
                filter.And(x => x.Name.In(model.Name));
            }
            if (model.AuthorizationEnabled.HasValue)
            {
                filter.And(x => x.AuthorizationEnabled == model.AuthorizationEnabled.Value);
            }
            if (model.IsCustomizable.HasValue)
            {
                filter.And(x => x.IsCustomizable == model.IsCustomizable.Value);
            }
            if (model.LogEnabled.HasValue)
            {
                filter.And(x => x.LogEnabled == model.LogEnabled.Value);
            }
            if (model.DuplicateEnabled.HasValue)
            {
                filter.And(x => x.DuplicateEnabled == model.DuplicateEnabled.Value);
            }
            if (model.WorkFlowEnabled.HasValue)
            {
                filter.And(x => x.WorkFlowEnabled == model.WorkFlowEnabled.Value);
            }
            if (model.BusinessFlowEnabled.HasValue)
            {
                filter.And(x => x.BusinessFlowEnabled == model.BusinessFlowEnabled.Value);
            }
            List <Schema.Domain.Entity> result;

            if (model.SolutionId.HasValue)
            {
                var pagedResult = _entityFinder.QueryPaged(x => x
                                                           .Page(1, 250000)
                                                           .Where(filter), model.SolutionId.Value, true);
                result = pagedResult.Items;
            }
            else
            {
                result = _entityFinder.Query(x => x
                                             .Where(filter));
            }
            return(JOk(result));
        }
コード例 #4
0
        public IActionResult AppendRecord(Guid entityid, Guid recordid)
        {
            AppendRecordModel model = new AppendRecordModel
            {
                EntityId   = entityid,
                ObjectId   = recordid,
                EntityMaps = _entityMapFinder.Query(n => n.Where(f => f.SourceEntityId == entityid && f.StateCode == RecordState.Enabled))
            };

            if (model.EntityMaps.NotEmpty())
            {
                var targetIds = model.EntityMaps.Select(n => n.TargetEntityId);
                model.TargetEntityMetas = _entityFinder.Query(n => n.Where(f => f.EntityId.In(targetIds)));
            }
            return(View($"~/Views/Entity/{WebContext.ActionName}.cshtml", model));
        }
コード例 #5
0
 /// <summary>
 ///     This is an internal API that supports the Entity Framework Core infrastructure and not subject to
 ///     the same compatibility standards as public APIs. It may be changed or removed without notice in
 ///     any release. You should only use it directly in your code with extreme caution and knowing that
 ///     doing so can result in application failures when updating to a new Entity Framework Core release.
 /// </summary>
 public virtual IQueryable Query(InternalEntityEntry entry)
 => _entityFinder.Query(_navigation, entry);