Пример #1
0
        /// <summary>
        /// 根據InviteCode 建立成員角色資訊 - 邀請碼加入
        /// </summary>
        /// <param name="requestData"></param>
        /// <returns></returns>
        public InviteResponseData InsertCircleMemberRoleByInvite(CircleMemberRoleRequest requestData)
        {
            var db = _uow.DbContext;

            var inviteData   = db.MemberInvite.FirstOrDefault(t => t.Code.ToLower() == requestData.InviteCode.ToLower());
            var responseData = new InviteResponseData()
            {
                InviteStatus = InviteStatusEnum.inviteError
            };

            if (inviteData == null)
            {
                return(responseData);
            }

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

            if (learningCircleInfo == null || learningCircleInfo.InviteEnable == false || learningCircleInfo.Enable == false)
            {
                responseData.InviteStatus = InviteStatusEnum.EndInvite;
                return(responseData);
            }
            responseData.CircleName = learningCircleInfo.Name;

            if (inviteData.Enable == false)
            {
                responseData.InviteStatus = InviteStatusEnum.inviteError;
                return(responseData);
            }

            var memberService = new MemberService();
            var memberInfo    = memberService.TokenToMember(requestData.Token).Result;

            if (memberInfo == null || memberInfo.OrgId != learningCircleInfo.OrgId.Value)
            {
                responseData.InviteStatus = InviteStatusEnum.AccountNotAllow;
                return(responseData);
            }
            var organizationInfo = _uow.DbContext.Organizations.FirstOrDefault(t => t.Id == memberInfo.OrgId);

            if (organizationInfo == null)
            {
                responseData.InviteStatus = InviteStatusEnum.AccountNotAllow;
                return(responseData);
            }
            responseData.OrgName = organizationInfo.Name;

            //查出學生角色資訊
            var learningRoleInfo = db.LearningRole.FirstOrDefault(t => t.Level == 3 && t.LearningId == learningCircleInfo.Id && t.IsFixed == false);

            if (learningRoleInfo == null)
            {
                responseData.InviteStatus = InviteStatusEnum.EndInvite;
                return(responseData);
            }

            //判斷要加的管理者是否跟Token帳號一致
            var checkAddAccountIsSuccess = requestData.Accounts.FirstOrDefault(t => t.ToString().ToLower() == memberInfo.Account.ToLower());

            if (checkAddAccountIsSuccess == null)
            {
                responseData.InviteStatus = InviteStatusEnum.inviteError;
                return(responseData);
            }
            //將驗證碼失效
            var getOldInviteData = _uow.DbContext.MemberInvite.FirstOrDefault
                                       (t => t.CircleKey.ToLower() == inviteData.CircleKey.ToLower() &&
                                       t.Enable == true &&
                                       t.Type == 0 &&
                                       t.Code.ToLower() == requestData.InviteCode.ToLower());

            if (getOldInviteData != null && getOldInviteData.IsCourseCode == false)
            {
                getOldInviteData.Enable = false;
            }
            else if (getOldInviteData.IsCourseCode == false)
            {
                responseData.InviteStatus = InviteStatusEnum.inviteError;
                return(responseData);
            }
            var checkJoined = db.CircleMemberRoleplay.FirstOrDefault(t => t.MemberId == memberInfo.Id && t.RoleId == learningRoleInfo.Id && t.CircleId == learningCircleInfo.Id);

            if (checkJoined == null)
            {
                var entity = new CircleMemberRoleplay()
                {
                    CircleId = learningCircleInfo.Id,
                    Enable   = true,
                    MemberId = memberInfo.Id,
                    ResType  = requestData.ResType,
                    RoleId   = learningRoleInfo.Id
                };
                db.CircleMemberRoleplay.Add(entity);
                var circleMemberEntity = new CircleMember()
                {
                    CircleId = learningCircleInfo.Id,
                    Enabled  = true,
                    MemberId = memberInfo.Id,
                    Created  = TimeData.Create(DateTime.UtcNow),
                    Deleted  = TimeData.Create(null),
                    Updated  = TimeData.Create(null)
                };
                db.CircleMember.Add(circleMemberEntity);
                db.CircleMemberRoleplay.Add(entity);
            }
            else
            {
                checkJoined.Enable = true;
            }
            db.SaveChanges();
            responseData.InviteStatus = InviteStatusEnum.success;
            return(responseData);
        }
Пример #2
0
        /// <summary>
        /// 根據邀請碼加入課程管理者列表
        /// </summary>
        /// <param name="requestData"></param>
        /// <returns></returns>
        public InviteResponseData CreateMutiple(CourseManagerPostRequest requestData)
        {
            var inviteData   = _uow.DbContext.MemberInvite.FirstOrDefault(t => t.Code.ToLower() == requestData.InviteCode.ToLower());
            var responseData = new InviteResponseData()
            {
                InviteStatus = InviteStatusEnum.inviteError
            };

            if (inviteData == null)
            {
                return(responseData);
            }

            var learningService    = new LearningCircleService();
            var learningCircleInfo = learningService.GetDetailByOuterKey(inviteData.CircleKey.ToLower());

            //課程停止邀請
            if (learningCircleInfo == null || learningCircleInfo.AdminInviteEnable == false || learningCircleInfo.Enable == false)
            {
                responseData.InviteStatus = InviteStatusEnum.EndInvite;
                return(responseData);
            }

            //邀請碼失效
            if (inviteData.Enable == false)
            {
                responseData.InviteStatus = InviteStatusEnum.inviteError;
                return(responseData);
            }


            responseData.CircleName = learningCircleInfo.Name;

            var memberService = new MemberService();
            var memberInfo    = memberService.TokenToMember(requestData.Token).Result;

            if (memberInfo == null || memberInfo.OrgId != learningCircleInfo.OrgId.Value)
            {
                responseData.InviteStatus = InviteStatusEnum.AccountNotAllow;
                return(responseData);
            }
            var organizationInfo = _uow.DbContext.Organizations.FirstOrDefault(t => t.Id == memberInfo.OrgId);

            if (organizationInfo == null)
            {
                responseData.InviteStatus = InviteStatusEnum.AccountNotAllow;
                return(responseData);
            }
            responseData.OrgName = organizationInfo.Name;


            //判斷要加的管理者是否跟Token帳號一致
            var checkAddAccountIsSuccess = requestData.Accounts.FirstOrDefault(t => t.ToString() == memberInfo.Account);

            if (checkAddAccountIsSuccess == null)
            {
                responseData.InviteStatus = InviteStatusEnum.inviteError;
                return(responseData);
            }
            //將驗證碼失效
            var getOldInviteData = _uow.DbContext.MemberInvite.FirstOrDefault
                                       (t => t.CircleKey.ToLower() == inviteData.CircleKey.ToLower() &&
                                       t.Enable == true && t.Type == 1 && t.Code.ToLower() == requestData.InviteCode.ToLower());

            if (getOldInviteData != null)
            {
                getOldInviteData.Enable = false;
            }
            else
            {
                responseData.InviteStatus = InviteStatusEnum.inviteError;
                return(responseData);
            }

            var checkJoined = GetDetail(memberInfo.Id, learningCircleInfo.Id, null);

            //判斷是否加入過
            if (checkJoined != null)
            {
                UpdateFromCreate(checkJoined.Id);
                {
                    responseData.InviteStatus = InviteStatusEnum.success;
                    return(responseData);
                }
            }
            var entity = new LearningCircleManager()
            {
                CreateUtcDate    = DateTime.UtcNow,
                Creator          = memberInfo.Id,
                Enable           = true,
                LearningCircleId = learningCircleInfo.Id,
                MemberId         = memberInfo.Id,
                ResType          = requestData.ResType
            };

            _uow.DbContext.LearningCircleManager.Add(entity);
            _uow.SaveChanges();
            responseData.InviteStatus = InviteStatusEnum.success;
            return(responseData);
        }