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));
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }