Example #1
0
        public ActionResult GetPlistRoleGroups(GetPlistRoleGroups requestData)
        {
            if (!ModelState.IsValid)
            {
                return(ModelState.ToJsonResult());
            }
            var data = AcDomain.GetPlistRoleGroups(requestData);

            Debug.Assert(requestData.Total != null, "requestData.total != null");
            return(this.JsonResult(new MiniGrid <Dictionary <string, object> > {
                total = requestData.Total.Value, data = data
            }));
        }
Example #2
0
        public ActionResult GetPlistRoleGroups(GetPlistRoleGroups requestData)
        {
            if (!ModelState.IsValid)
            {
                return ModelState.ToJsonResult();
            }
            var data = AcDomain.GetPlistRoleGroups(requestData);

            Debug.Assert(requestData.Total != null, "requestData.total != null");
            return this.JsonResult(new MiniGrid<Dictionary<string, object>> { total = requestData.Total.Value, data = data });
        }
Example #3
0
        public static IQueryable<Dictionary<string, object>> GetPlistRoleGroups(this IAcDomain acDomain, GetPlistRoleGroups requestData)
        {
            RoleState role;
            if (!acDomain.RoleSet.TryGetRole(requestData.RoleId, out role))
            {
                throw new ValidationException("意外的角色标识" + requestData.RoleId);
            }
            var data = new List<Dictionary<string, object>>();
            foreach (var group in acDomain.GroupSet)
            {
                var roleGroup = acDomain.PrivilegeSet.FirstOrDefault(a =>
                    a.SubjectType == AcElementType.Role && a.ObjectType == AcElementType.Group
                    && a.SubjectInstanceId == role.Id && a.ObjectInstanceId == group.Id);
                if (requestData.IsAssigned.HasValue)
                {
                    if (requestData.IsAssigned.Value)
                    {
                        if (roleGroup == null)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (roleGroup != null)
                        {
                            continue;
                        }
                    }
                }
                string createBy = null;
                DateTime? createOn = null;
                Guid? createUserId = null;
                Guid id;
                bool isAssigned;
                if (roleGroup != null)
                {
                    createBy = roleGroup.CreateBy;
                    createOn = roleGroup.CreateOn;
                    createUserId = roleGroup.CreateUserId;
                    id = roleGroup.Id;
                    isAssigned = true;
                }
                else
                {
                    id = Guid.NewGuid();
                    isAssigned = false;
                }
                data.Add(new Dictionary<string, object>
                {
                    {"CategoryCode", group.CategoryCode??string.Empty},
                    {"CreateBy", createBy},
                    {"CreateOn", createOn},
                    {"CreateUserId", createUserId},
                    {"GroupId", group.Id},
                    {"Id", id},
                    {"IsAssigned", isAssigned},
                    {"IsEnabled", group.IsEnabled},
                    {"Name", group.Name??string.Empty},
                    {"RoleId", role.Id},
                    {"SortCode", group.SortCode}
                });
            }
            var pageIndex = requestData.PageIndex;
            var pageSize = requestData.PageSize;
            var queryable = data.AsQueryable();
            if (!string.IsNullOrEmpty(requestData.Key))
            {
                queryable = queryable.Where(a => a["Name"].ToString().Contains(requestData.Key) || a["CategoryCode"].ToString().Contains(requestData.Key));
            }
            requestData.Total = queryable.Count();
            if (requestData.Total > 0)
            {
                var firstRecord = queryable.First();
                if (!firstRecord.Keys.Contains(requestData.SortField))
                {
                    throw new ValidationException("意外的字段" + requestData.SortField);
                }
                var sortOrder = (requestData.SortOrder ?? "asc").ToLower();
                switch (sortOrder)
                {
                    case "asc":
                        queryable = queryable.OrderBy(a => a[requestData.SortField]);
                        break;
                    case "desc":
                        queryable = queryable.OrderByDescending(a => a[requestData.SortField]);
                        break;
                    default:
                        throw new InvalidOperationException();
                }
            }

            return queryable.Skip(pageIndex * pageSize).Take(pageSize);
        }
Example #4
0
        public static IQueryable <Dictionary <string, object> > GetPlistRoleGroups(this IAcDomain acDomain, GetPlistRoleGroups requestData)
        {
            RoleState role;

            if (!acDomain.RoleSet.TryGetRole(requestData.RoleId, out role))
            {
                throw new ValidationException("意外的角色标识" + requestData.RoleId);
            }
            var data = new List <Dictionary <string, object> >();

            foreach (var group in acDomain.GroupSet)
            {
                var roleGroup = acDomain.PrivilegeSet.FirstOrDefault(a =>
                                                                     a.SubjectType == AcElementType.Role && a.ObjectType == AcElementType.Group &&
                                                                     a.SubjectInstanceId == role.Id && a.ObjectInstanceId == group.Id);
                if (requestData.IsAssigned.HasValue)
                {
                    if (requestData.IsAssigned.Value)
                    {
                        if (roleGroup == null)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (roleGroup != null)
                        {
                            continue;
                        }
                    }
                }
                string   createBy     = null;
                DateTime?createOn     = null;
                Guid?    createUserId = null;
                Guid     id;
                bool     isAssigned;
                if (roleGroup != null)
                {
                    createBy     = roleGroup.CreateBy;
                    createOn     = roleGroup.CreateOn;
                    createUserId = roleGroup.CreateUserId;
                    id           = roleGroup.Id;
                    isAssigned   = true;
                }
                else
                {
                    id         = Guid.NewGuid();
                    isAssigned = false;
                }
                data.Add(new Dictionary <string, object>
                {
                    { "CategoryCode", group.CategoryCode ?? string.Empty },
                    { "CreateBy", createBy },
                    { "CreateOn", createOn },
                    { "CreateUserId", createUserId },
                    { "GroupId", group.Id },
                    { "Id", id },
                    { "IsAssigned", isAssigned },
                    { "IsEnabled", group.IsEnabled },
                    { "Name", group.Name ?? string.Empty },
                    { "RoleId", role.Id },
                    { "SortCode", group.SortCode }
                });
            }
            var pageIndex = requestData.PageIndex;
            var pageSize  = requestData.PageSize;
            var queryable = data.AsQueryable();

            if (!string.IsNullOrEmpty(requestData.Key))
            {
                queryable = queryable.Where(a => a["Name"].ToString().Contains(requestData.Key) || a["CategoryCode"].ToString().Contains(requestData.Key));
            }
            requestData.Total = queryable.Count();
            if (requestData.Total > 0)
            {
                var firstRecord = queryable.First();
                if (!firstRecord.Keys.Contains(requestData.SortField))
                {
                    throw new ValidationException("意外的字段" + requestData.SortField);
                }
                var sortOrder = (requestData.SortOrder ?? "asc").ToLower();
                switch (sortOrder)
                {
                case "asc":
                    queryable = queryable.OrderBy(a => a[requestData.SortField]);
                    break;

                case "desc":
                    queryable = queryable.OrderByDescending(a => a[requestData.SortField]);
                    break;

                default:
                    throw new InvalidOperationException();
                }
            }

            return(queryable.Skip(pageIndex * pageSize).Take(pageSize));
        }