Esempio n. 1
0
        /// <summary>
        /// 新增單筆資訊
        /// </summary>
        /// <param name="circleKey"></param>
        /// <param name="account"></param>
        /// <param name="token"></param>
        /// <param name="roleId"></param>
        /// <returns></returns>
        public bool InsertCircleMemberRole(string circleKey, string account, string token, int roleId)
        {
            var memberService = new MemberService();
            var memberInfo    = memberService.TokenToMember(token).Result;

            if (memberInfo == null)
            {
                return(false);
            }

            var learningRoleService = new LearningRoleService();
            var learningRoleInfo    = learningRoleService.GetDetailById(roleId);

            if (learningRoleInfo == null)
            {
                return(false);
            }
            var learningCircleService = new LearningCircleService();
            var learningCircleInfo    = learningCircleService.GetDetailByOuterKey(circleKey.ToLower());

            if (learningCircleInfo == null)
            {
                return(false);
            }
            var accountInfo = memberService.AccountToMember(account, learningCircleInfo.OrgId);

            if (accountInfo == null)
            {
                return(false);
            }

            var entity = new CircleMemberRoleplay()
            {
                CircleId    = learningCircleInfo.Id,
                Enable      = true,
                MemberId    = accountInfo.Id,
                RoleId      = roleId,
                ResType     = 0,
                ExternalRid = null
            };

            _uow.DbContext.CircleMemberRoleplay.Add(entity);
            return(true);
        }
Esempio n. 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);
        }
Esempio n. 3
0
        /// <summary>
        /// 建立成員角色資訊
        /// </summary>
        /// <param name="account"></param>
        /// <param name="circleKey"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public bool InsertMutipleCircleMemberRole(CircleMemberRoleRequest data)
        {
            var db           = _uow.DbContext;
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(data.Token).Result;

            if (tokenInfo == null)
            {
                return(false);
            }

            var learningCircleInfo = db.LearningCircle.FirstOrDefault(t => t.LearningOuterKey == data.CircleKey);

            if (learningCircleInfo == null)
            {
                return(false);
            }

            foreach (var account in data.Accounts)
            {
                var memberService = new MemberService();
                var memberInfo    = memberService.AccountToMember(account.ToLower(), learningCircleInfo.OrgId.Value);

                if (memberInfo == null)
                {
                    return(false);
                }

                //判斷是否已存在關聯
                var checkData = GetCircleMemberRoleInfo(memberInfo.Id, learningCircleInfo.Id, data.RoleId.Value);

                //已存在就不新增
                if (checkData != null)
                {
                    continue;
                }

                var entity = new Infrastructure.Entity.CircleMemberRoleplay()
                {
                    Enable   = true,
                    CircleId = learningCircleInfo.Id,
                    MemberId = memberInfo.Id,
                    RoleId   = data.RoleId.Value
                };

                var circlememberEntity = new CircleMember()
                {
                    MemberId   = memberInfo.Id,
                    CircleId   = learningCircleInfo.Id,
                    Enabled    = true,
                    Created    = TimeData.Create(DateTime.UtcNow),
                    Deleted    = TimeData.Create(null),
                    Updated    = TimeData.Create(null),
                    CreateUser = tokenInfo.MemberId
                };
                db.CircleMemberRoleplay.Add(entity);
                db.CircleMember.Add(circlememberEntity);
            }
            db.SaveChanges();
            return(true);
        }