/// <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); }
/// <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); }