public IHttpActionResult Put(CircleMemberRolePutRequest requestData) { var response = new Infrastructure.ViewModel.Base.BaseResponse <IEnumerable <CircleMemberRoleManageGetResponse> >(); var requestService = new Service.Utility.RequestDataHelper <CircleMemberRolePutRequest>(); var checkColumnKey = new string[4] { "token", "circlekey", "accounts", "roleid" }; var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKey); response.Success = false; response.Data = new List <CircleMemberRoleManageGetResponse>(); if (checkEmpty == false) { response.Message = "遺漏參數"; response.State = Infrastructure.ViewModel.Base.LogState.RequestDataError; return(Content(HttpStatusCode.BadRequest, response)); } var authService = new AuthService(); var checkManageAuth = authService.CheckCourseManageAuth(requestData.Token, requestData.CircleKey.ToLower()); //除了課程管理者與老師可以修改,其他角色都不得修改 if (checkManageAuth == null || checkManageAuth.CircleMemberSetting.Admin == false) { response.Message = "無權限修改"; response.State = Infrastructure.ViewModel.Base.LogState.Error; return(Ok(response)); } //如果是課程管理者,就可以做任何事(嘿嘿嘿... var responseData = checkManageAuth.CircleMemberSetting.AddCircleMember == true? circleMemberService.UpdateMutiple(requestData, true) : circleMemberService.UpdateMutiple(requestData); if (responseData) { response.Success = true; response.Message = "修改成功"; var datas = circleMemberService.GetAzureCircleMemberRoleListByCircleKey(requestData.CircleKey.ToLower(), requestData.Token); if (datas.FirstOrDefault() != null) { response.Data = datas; } } else { response.Message = "修改失敗"; response.State = Infrastructure.ViewModel.Base.LogState.Error; } return(Ok(response)); }
/// <summary> /// 刪除成員選課資訊 /// </summary> /// <param name="account"></param> /// <param name="circleKey"></param> /// <param name="token"></param> /// <returns></returns> public bool DeleteCircleMemberRole(CircleMemberRolePutRequest data) { var db = _uow.DbContext; var tokenService = new TokenService(); var deleter = tokenService.GetTokenInfo(data.Token).Result; if (deleter == 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 memberInfo = db.Members.FirstOrDefault(t => t.Account.ToLower() == account.ToLower()); if (memberInfo == null) { return(false); } //判斷是否已存在關聯 var checkRoleData = GetDataByAccountCircleKey(account, data.CircleKey.ToLower()); var checkCircleMemberData = GetCircleMemberInfo(memberInfo.Id, learningCircleInfo.Id); if (checkRoleData.FirstOrDefault() != null) { if (checkRoleData.FirstOrDefault().ExternalRid == null) { db.CircleMemberRoleplay.RemoveRange(checkRoleData.ToList()); } else { return(false); } } if (checkCircleMemberData != null) { db.CircleMember.Remove(checkCircleMemberData); } } db.SaveChanges(); return(true); }
/// <summary> /// 修改多筆資料 /// </summary> /// <param name="requestData"></param> /// <returns></returns> public bool UpdateMutiple(CircleMemberRolePutRequest requestData, bool?isAdmin = false) { var memberService = new MemberService(); var updaterInfo = memberService.TokenToMember(requestData.Token).Result; if (updaterInfo == null) { return(false); } if (requestData.Accounts == null || requestData.Accounts.FirstOrDefault() == null) { return(false); } var learningRoleService = new LearningRoleService(); var updateRoleLevel = learningRoleService.GetMyRole(requestData.Token, requestData.CircleKey.ToLower()); if (updateRoleLevel == null) { return(false); } //判斷是否能改request的role var checkRoleLevel = learningRoleService.GetDetailById(requestData.RoleId); if (checkRoleLevel == null) { return(false); } if (isAdmin.Value == false) { //設定數字越小,權限越大;故如果level大於等於request的level,就不能修改 if (updateRoleLevel.Level >= checkRoleLevel.Level) { return(false); } } foreach (var updateAccount in requestData.Accounts) { //該成員已經有該角色 var checkData = GetDataByAccountCircleKeyRoleId(updateAccount, requestData.CircleKey.ToLower(), requestData.RoleId).FirstOrDefault(); if (checkData != null) { checkData.Enable = true; continue; } //修改該成員的角色 var oldData = GetDataByAccountCircleKey(updateAccount, requestData.CircleKey.ToLower()).FirstOrDefault(); if (oldData != null) { oldData.RoleId = requestData.RoleId; } else { //沒有就新增一筆 InsertCircleMemberRole(requestData.CircleKey.ToLower(), updateAccount, requestData.Token, requestData.RoleId); } } _uow.SaveChanges(); return(true); }