示例#1
0
        /// <summary>
        /// Gets the permission items as a dictionary.
        /// </summary>
        /// <returns>The permission items.</returns>
        public IReadOnlyList <PermissionItemStatus> GetItems()
        {
            if (items != null)
            {
                return(items);
            }
            var temp = new Dictionary <string, List <string> >();

            foreach (var item in GroupPermissions)
            {
                var perms = item.GetPermissionList();
                foreach (var p in perms)
                {
                    if (string.IsNullOrWhiteSpace(p))
                    {
                        continue;
                    }
                    var key = p.Trim();
                    if (!temp.ContainsKey(key))
                    {
                        temp[key] = new List <string>();
                    }
                    temp[key].Add(item.TargetId);
                }
            }

            if (items != null)
            {
                return(items);
            }
            var col = UserPermission?.GetPermissionList()?.ToList() ?? new List <string>();

            if (ClientPermission != null)
            {
                col.AddRange(ClientPermission.GetPermissionList());
            }
            items = col.Distinct().Select(p =>
            {
                if (string.IsNullOrWhiteSpace(p))
                {
                    return(null);
                }
                var key = p.Trim();
                temp.TryGetValue(key, out var g);
                return(new PermissionItemStatus(key, true, g));
            }).Where(p => p != null).ToList().AsReadOnly();
            return(items);
        }