Ejemplo n.º 1
0
        public async Task <IDictionary <String, IList <dynamic> > > GetDeskMembersAsync(Int32 userId)
        {
            Check.IfNullOrZero(userId);

            var result = await CacheHelper.GetOrSetCacheAsync(new DesktopCacheKey(userId), () => _memberContext.GetMembersAsync(userId));

            var deskGroup      = result.GroupBy(a => a.DeskIndex);
            var deskDictionary = new Dictionary <String, IList <dynamic> >();

            foreach (var desk in deskGroup)
            {
                var members     = desk.ToList();
                var deskMembers = new List <dynamic>();
                foreach (var member in members.Where(w => w.MemberType == MemberType.Folder))
                {
                    deskMembers.Add(new
                    {
                        type      = member.MemberType.ToString().ToLower(),
                        memberId  = member.Id,
                        appId     = member.Id,
                        name      = member.Name,
                        icon      = member.IsIconByUpload ? $@"{Appsetting.FileUrl}{member.IconUrl}" : member.IconUrl,
                        width     = member.Width,
                        height    = member.Height,
                        isOnDock  = member.IsOnDock,
                        isOpenMax = member.IsOpenMax,
                        isSetbar  = member.IsSetbar,
                        apps      = members.Where(m => m.FolderId == member.Id).Select(app => new
                        {
                            type      = app.MemberType.ToString().ToLower(),
                            memberId  = app.Id,
                            appId     = app.Id,
                            name      = app.Name,
                            icon      = app.IsIconByUpload ? $@"{Appsetting.FileUrl }{app.IconUrl}" : app.IconUrl,
                            width     = app.Width,
                            height    = app.Height,
                            isOnDock  = app.IsOnDock,
                            isOpenMax = app.IsOpenMax,
                            isSetbar  = app.IsSetbar,
                        })
                    });
                }
                foreach (var member in members.Where(w => (w.MemberType == MemberType.App || w.MemberType == MemberType.Widget) && w.FolderId == 0))
                {
                    deskMembers.Add(new
                    {
                        type      = member.MemberType.ToString().ToLower(),
                        memberId  = member.Id,
                        appId     = member.Id,
                        name      = member.Name,
                        icon      = member.IsIconByUpload ? $@"{Appsetting.FileUrl}{ member.IconUrl}" : member.IconUrl,
                        width     = member.Width,
                        height    = member.Height,
                        isOnDock  = member.IsOnDock,
                        isOpenMax = member.IsOpenMax,
                        isSetbar  = member.IsSetbar
                    });
                }
                deskDictionary.Add(desk.Key.ToString(), deskMembers);
            }

            return(deskDictionary);
        }