Exemple #1
0
        private dynamic GetData(SignalrDataType signalrDataType, string circleKey, int memberId)
        {
            /* 2018-04-02 yuschang
             */
            switch (signalrDataType)
            {
            case SignalrDataType.Notice:
                return(noticeService.GetNoticeList(circleKey, memberId, 1));

            case SignalrDataType.Activity:
                return(activityService.GetLatestList(memberId, ""));

            default:
                return(null);
            }
        }
Exemple #2
0
        /// <summary>
        /// 查詢學習圈底下 ConnectId 和最後活動紀錄
        /// </summary>
        /// <param name="circleKey"></param>
        /// <param name="version">true 新版(全) / old 舊版(扣除自己) </param>
        /// <returns></returns>
        public Dictionary <List <string>, dynamic> GetConnectIdAndData(string circleKey, int memberId, SignalrConnectIdType connectIdType, SignalrDataType dataType)
        {
            Dictionary <List <string>, dynamic> dic = new Dictionary <List <string>, dynamic>();

            List <int> membersId             = new List <int>();
            var        learningCircleService = new LearningCircleService();
            var        learningcircleInfo    = learningCircleService.GetDetailByOuterKey(circleKey.ToLower());

            if (learningcircleInfo == null)
            {
                return(dic);
            }
            switch (connectIdType)
            {
            case SignalrConnectIdType.All:
                var cacheMembers = cacheService.GetCircleMember(circleKey);
                if (cacheMembers == null)
                {
                    return(dic);
                }
                foreach (var member in cacheMembers)
                {
                    membersId.Add(member.Id);
                }
                break;

            case SignalrConnectIdType.Other:
                var cacheOtherMembers = cacheService.GetCircleMember(circleKey).Where(x => x.Id != memberId);
                if (cacheOtherMembers == null || cacheOtherMembers.FirstOrDefault() == null)
                {
                    return(dic);
                }
                foreach (var member in cacheOtherMembers.ToList())
                {
                    membersId.Add(member.Id);
                }
                break;

            case SignalrConnectIdType.Teachers:
                var membersAccount = learningCircleService.GetCircleTeacherListBySql(circleKey, memberId);
                if (membersAccount == null)
                {
                    return(dic);
                }
                foreach (var account in membersAccount)
                {
                    membersId.Add(memberService.AccountToMember(account, learningcircleInfo.OrgId.Value).Id);
                }
                break;

            case SignalrConnectIdType.One:
                membersId.Add(memberId);
                break;
            }

            foreach (var member in membersId)
            {
                if (HttpContext.Current == null)
                {
                    return(dic);
                }
                if (HttpContext.Current.Cache.Get(member.ToString()) is List <string> myConn)
                {
                    var     data = GetData(dataType, circleKey, member);
                    dynamic _value;
                    if (!dic.TryGetValue(myConn, out _value))
                    {
                        dic.Add(myConn, data);
                    }
                }
            }

            return(dic);
        }