Exemplo n.º 1
0
        public ActionResult GetPlistPrivilegeByRoleId(GetPlistFunctionByRoleId requestData)
        {
            if (!ModelState.IsValid)
            {
                return(ModelState.ToJsonResult());
            }
            var data = AcDomain.GetPlistPrivilegeByRoleId(requestData);

            Debug.Assert(requestData.Total != null, "requestData.total != null");
            return(this.JsonResult(new MiniGrid <RoleAssignFunctionTr> {
                total = requestData.Total.Value, data = data
            }));
        }
Exemplo n.º 2
0
        public static IQueryable<RoleAssignFunctionTr> GetPlistPrivilegeByRoleId(this IAcDomain acDomain, GetPlistFunctionByRoleId requestData)
        {
            AppSystemState appSystem;
            if (!acDomain.AppSystemSet.TryGetAppSystem(requestData.AppSystemId, out appSystem))
            {
                throw new ValidationException("意外的应用系统标识" + requestData.AppSystemId);
            }
            RoleState role;
            if (!acDomain.RoleSet.TryGetRole(requestData.RoleId, out role))
            {
                throw new ValidationException("意外的角色标识" + requestData.RoleId);
            }
            if (requestData.ResourceTypeId.HasValue)
            {
                CatalogState resource;
                if (!acDomain.CatalogSet.TryGetCatalog(requestData.ResourceTypeId.Value, out resource))
                {
                    throw new ValidationException("意外的资源标识" + requestData.ResourceTypeId);
                }
            }
            var roleFunctions = acDomain.PrivilegeSet.Where(a => a.SubjectType == AcElementType.Role && a.ObjectType == AcElementType.Function).ToList();
            var functions = acDomain.FunctionSet.Where(a => a.AppSystem.Id == requestData.AppSystemId && a.IsManaged);
            if (requestData.ResourceTypeId.HasValue)
            {
                functions = functions.Where(a => a.ResourceTypeId == requestData.ResourceTypeId.Value);
            }
            var data = new List<RoleAssignFunctionTr>();
            foreach (var function in functions)
            {
                var roleFunction = roleFunctions.FirstOrDefault(a => a.SubjectInstanceId == role.Id && a.ObjectInstanceId == function.Id);
                if (requestData.IsAssigned.HasValue)
                {
                    if (requestData.IsAssigned.Value)
                    {
                        if (roleFunction == null)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (roleFunction != null)
                        {
                            continue;
                        }
                    }
                }
                string createBy = null;
                DateTime? createOn = null;
                Guid? createUserId = null;
                Guid id;
                bool isAssigned;
                string orientation = null;
                string privilegeConstraint = null;
                if (roleFunction != null)
                {
                    createBy = roleFunction.CreateBy;
                    createOn = roleFunction.CreateOn;
                    createUserId = roleFunction.CreateUserId;
                    id = roleFunction.Id;
                    isAssigned = true;
                    orientation = roleFunction.AcContentType;
                    privilegeConstraint = roleFunction.AcContent;
                }
                else
                {
                    id = Guid.NewGuid();
                    isAssigned = false;
                }
                data.Add(new RoleAssignFunctionTr
                {
                    AppSystemCode = appSystem.Code,
                    AppSystemId = appSystem.Id,
                    CreateBy = createBy,
                    CreateOn = createOn,
                    CreateUserId = createUserId,
                    Description = function.Description,
                    FunctionCode = function.Code,
                    FunctionId = function.Id,
                    Id = id,
                    IsAssigned = isAssigned,
                    AcContentType = orientation,
                    AcContent = privilegeConstraint,
                    ResourceCode = function.Resource.Code,
                    ResourceTypeId = function.ResourceTypeId,
                    ResourceName = function.Resource.Name,
                    RoleId = requestData.RoleId,
                    SortCode = function.SortCode
                });
            }
            int pageIndex = requestData.PageIndex;
            int pageSize = requestData.PageSize;
            var queryable = data.AsQueryable();
            if (!string.IsNullOrEmpty(requestData.Key))
            {
                queryable = queryable.Where(a => a.Description.Contains(requestData.Key) || a.FunctionCode.Contains(requestData.Key));
            }
            requestData.Total = queryable.Count();

            return queryable.OrderBy(requestData.SortField + " " + requestData.SortOrder).Skip(pageIndex * pageSize).Take(pageSize);
        }
Exemplo n.º 3
0
        public ActionResult GetPlistPrivilegeByRoleId(GetPlistFunctionByRoleId requestData)
        {
            if (!ModelState.IsValid)
            {
                return ModelState.ToJsonResult();
            }
            var data = AcDomain.GetPlistPrivilegeByRoleId(requestData);

            Debug.Assert(requestData.Total != null, "requestData.total != null");
            return this.JsonResult(new MiniGrid<RoleAssignFunctionTr> { total = requestData.Total.Value, data = data });
        }
Exemplo n.º 4
0
        public static IQueryable <RoleAssignFunctionTr> GetPlistPrivilegeByRoleId(this IAcDomain acDomain, GetPlistFunctionByRoleId requestData)
        {
            AppSystemState appSystem;

            if (!acDomain.AppSystemSet.TryGetAppSystem(requestData.AppSystemId, out appSystem))
            {
                throw new ValidationException("意外的应用系统标识" + requestData.AppSystemId);
            }
            RoleState role;

            if (!acDomain.RoleSet.TryGetRole(requestData.RoleId, out role))
            {
                throw new ValidationException("意外的角色标识" + requestData.RoleId);
            }
            if (requestData.ResourceTypeId.HasValue)
            {
                CatalogState resource;
                if (!acDomain.CatalogSet.TryGetCatalog(requestData.ResourceTypeId.Value, out resource))
                {
                    throw new ValidationException("意外的资源标识" + requestData.ResourceTypeId);
                }
            }
            var roleFunctions = acDomain.PrivilegeSet.Where(a => a.SubjectType == AcElementType.Role && a.ObjectType == AcElementType.Function).ToList();
            var functions     = acDomain.FunctionSet.Where(a => a.AppSystem.Id == requestData.AppSystemId && a.IsManaged);

            if (requestData.ResourceTypeId.HasValue)
            {
                functions = functions.Where(a => a.ResourceTypeId == requestData.ResourceTypeId.Value);
            }
            var data = new List <RoleAssignFunctionTr>();

            foreach (var function in functions)
            {
                var roleFunction = roleFunctions.FirstOrDefault(a => a.SubjectInstanceId == role.Id && a.ObjectInstanceId == function.Id);
                if (requestData.IsAssigned.HasValue)
                {
                    if (requestData.IsAssigned.Value)
                    {
                        if (roleFunction == null)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (roleFunction != null)
                        {
                            continue;
                        }
                    }
                }
                string   createBy     = null;
                DateTime?createOn     = null;
                Guid?    createUserId = null;
                Guid     id;
                bool     isAssigned;
                string   orientation         = null;
                string   privilegeConstraint = null;
                if (roleFunction != null)
                {
                    createBy            = roleFunction.CreateBy;
                    createOn            = roleFunction.CreateOn;
                    createUserId        = roleFunction.CreateUserId;
                    id                  = roleFunction.Id;
                    isAssigned          = true;
                    orientation         = roleFunction.AcContentType;
                    privilegeConstraint = roleFunction.AcContent;
                }
                else
                {
                    id         = Guid.NewGuid();
                    isAssigned = false;
                }
                data.Add(new RoleAssignFunctionTr
                {
                    AppSystemCode  = appSystem.Code,
                    AppSystemId    = appSystem.Id,
                    CreateBy       = createBy,
                    CreateOn       = createOn,
                    CreateUserId   = createUserId,
                    Description    = function.Description,
                    FunctionCode   = function.Code,
                    FunctionId     = function.Id,
                    Id             = id,
                    IsAssigned     = isAssigned,
                    AcContentType  = orientation,
                    AcContent      = privilegeConstraint,
                    ResourceCode   = function.Resource.Code,
                    ResourceTypeId = function.ResourceTypeId,
                    ResourceName   = function.Resource.Name,
                    RoleId         = requestData.RoleId,
                    SortCode       = function.SortCode
                });
            }
            int pageIndex = requestData.PageIndex;
            int pageSize  = requestData.PageSize;
            var queryable = data.AsQueryable();

            if (!string.IsNullOrEmpty(requestData.Key))
            {
                queryable = queryable.Where(a => a.Description.Contains(requestData.Key) || a.FunctionCode.Contains(requestData.Key));
            }
            requestData.Total = queryable.Count();

            return(queryable.OrderBy(requestData.SortField + " " + requestData.SortOrder).Skip(pageIndex * pageSize).Take(pageSize));
        }