Ejemplo n.º 1
0
        private CourseManageAuthResponse SetCourseManageAuth(bool isCourseManage, bool?isteacher = false, bool?isSupport = false, bool?isExternalRid = false, string circleKey = null)
        {
            var responseData = new CourseManageAuthResponse()
            {
                CircleAdminSetting    = new CircleAdminSettingAuth(),
                CircleInfoSetting     = new CircleInfoSettingAuth(),
                CircleMemberSetting   = new CircleMemberSettingAuth(),
                CircleRoleSetting     = new CircleRoleSettingAuth(),
                CircleScheduleSetting = new CircleScheduleSettingAuth(),
                CircleTimelistSetting = new CircleTimelistSettingAuth()
            };

            //同步過來的資料
            if (isExternalRid.HasValue && isExternalRid.Value)
            {
                var learningCircleInfo = _uow.DbContext.LearningCircle.FirstOrDefault(t => t.LearningOuterKey.ToLower() == circleKey.ToLower());
                if (learningCircleInfo == null)
                {
                    return(null);
                }
                var externalDatas = from er in _uow.DbContext.ExtResources
                                    join ert in _uow.DbContext.ExtResTypes on er.ExternalResTypeId equals ert.Id
                                    where er.Enable == true && er.OrgId == learningCircleInfo.OrgId
                                    select new { er, ert };

                responseData.CircleAdminSetting.Admin             = isCourseManage ? true : false;
                responseData.CircleAdminSetting.DeleteCircleAdmin = isCourseManage ? true : false;

                responseData.CircleInfoSetting.Admin = false;

                responseData.CircleMemberSetting.Admin              = (isCourseManage || isteacher.Value) ? true : false;
                responseData.CircleMemberSetting.AddCircleMember    = (isCourseManage || isteacher.Value) ? true : false;
                responseData.CircleMemberSetting.DeleteCircleMember = false;
                responseData.CircleMemberSetting.EditLevelOne       = false;

                responseData.CircleRoleSetting.AddCircleRole    = (isCourseManage || isteacher.Value) ? true : false;
                responseData.CircleRoleSetting.Admin            = (isCourseManage || isteacher.Value) ? true : false;
                responseData.CircleRoleSetting.DeleteCircleRole = (isCourseManage || isteacher.Value) ? true : false;
                responseData.CircleRoleSetting.AddLevelOne      = (isCourseManage && isteacher.Value == false) ? true : false;

                responseData.CircleScheduleSetting.Admin = (externalDatas.FirstOrDefault(t => t.ert.AsyncTypeCode == "schedule" && t.er.Enable) != null) ? false : true;
                responseData.CircleTimelistSetting.Admin = (externalDatas.FirstOrDefault(t => t.ert.AsyncTypeCode == "syncClass" && t.er.Enable) != null) ? false : true;

                return(responseData);
            }
            //管理者權限
            if (isCourseManage)
            {
                responseData.CircleAdminSetting.Admin             = true;
                responseData.CircleAdminSetting.DeleteCircleAdmin = true;
                responseData.CircleInfoSetting.Admin                = true;
                responseData.CircleMemberSetting.Admin              = true;
                responseData.CircleMemberSetting.AddCircleMember    = true;
                responseData.CircleMemberSetting.DeleteCircleMember = true;
                responseData.CircleRoleSetting.AddCircleRole        = true;
                responseData.CircleRoleSetting.Admin                = true;
                responseData.CircleRoleSetting.DeleteCircleRole     = true;
                responseData.CircleRoleSetting.AddLevelOne          = true;
                responseData.CircleScheduleSetting.Admin            = true;
                responseData.CircleTimelistSetting.Admin            = true;
                responseData.CircleMemberSetting.EditLevelOne       = true;
                return(responseData);
            }
            //老師權限
            if (isteacher.HasValue && isteacher.Value)
            {
                responseData.CircleAdminSetting.Admin             = false;
                responseData.CircleAdminSetting.DeleteCircleAdmin = false;

                responseData.CircleInfoSetting.Admin = true;

                responseData.CircleMemberSetting.Admin              = true;
                responseData.CircleMemberSetting.AddCircleMember    = false;
                responseData.CircleMemberSetting.DeleteCircleMember = false;
                responseData.CircleMemberSetting.EditLevelOne       = false;

                responseData.CircleRoleSetting.AddCircleRole    = true;
                responseData.CircleRoleSetting.Admin            = true;
                responseData.CircleRoleSetting.DeleteCircleRole = true;
                responseData.CircleRoleSetting.AddLevelOne      = false;

                responseData.CircleScheduleSetting.Admin = true;
                responseData.CircleTimelistSetting.Admin = true;
                return(responseData);
            }
            //助教權限
            if (isSupport.HasValue && isSupport.Value)
            {
                responseData.CircleAdminSetting.Admin             = false;
                responseData.CircleAdminSetting.DeleteCircleAdmin = false;

                responseData.CircleInfoSetting.Admin = true;

                responseData.CircleMemberSetting.Admin              = false;
                responseData.CircleMemberSetting.AddCircleMember    = false;
                responseData.CircleMemberSetting.DeleteCircleMember = false;
                responseData.CircleMemberSetting.EditLevelOne       = false;

                responseData.CircleRoleSetting.AddCircleRole    = false;
                responseData.CircleRoleSetting.Admin            = false;
                responseData.CircleRoleSetting.DeleteCircleRole = false;
                responseData.CircleRoleSetting.AddLevelOne      = false;

                responseData.CircleScheduleSetting.Admin = true;
                responseData.CircleTimelistSetting.Admin = true;
                return(responseData);
            }
            return(responseData);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 確認課程管理權限
        /// </summary>
        /// <param name="token"></param>
        /// <param name="circleKey"></param>
        /// <returns></returns>
        public CourseManageAuthResponse CheckCourseManageAuth(string token, string circleKey)
        {
            var memberService = new MemberService();
            var memberInfo    = memberService.TokenToMember(token).Result;

            if (memberInfo == null)
            {
                return(null);
            }
            var learningCircleService = new LearningCircleService();
            var learningInfo          = learningCircleService.GetDetailByOuterKey(circleKey.ToLower());

            if (learningInfo == null)
            {
                return(null);
            }
            var responseData = new CourseManageAuthResponse()
            {
                CircleAdminSetting    = new CircleAdminSettingAuth(),
                CircleInfoSetting     = new CircleInfoSettingAuth(),
                CircleMemberSetting   = new CircleMemberSettingAuth(),
                CircleRoleSetting     = new CircleRoleSettingAuth(),
                CircleScheduleSetting = new CircleScheduleSettingAuth(),
                CircleTimelistSetting = new CircleTimelistSettingAuth()
            };

            //課程管理者
            var isCourseManage = CheckCourseAdmin(memberInfo.Id, circleKey);
            //分類系所管理者
            var isDepartmentAdmin   = CheckDepartmentAdmin(memberInfo.Id, memberInfo.OrgId);
            var learningRoleService = new LearningRoleService();
            //查看查詢者在課程裡的角色
            var myRole = learningRoleService.GetMyRole(token, circleKey);

            //如果是匯入的課程
            if (learningInfo.ExternalRid != null)
            {
                responseData = SetCourseManageAuth(
                    //判斷是否為課程管理者
                    (isCourseManage || ((learningInfo.OrgId.Value == memberInfo.OrgId && memberInfo.IsOrgAdmin) || isDepartmentAdmin)),
                    myRole.Level == 1, //判斷是否為老師身分
                    myRole.Level == 2, //判斷是否為助教身分
                    true);             //是匯入所以是true
                return(responseData);
            }
            //一般課程管理者
            if (isCourseManage || ((learningInfo.OrgId.Value == memberInfo.OrgId && memberInfo.IsOrgAdmin) || isDepartmentAdmin))
            {
                responseData = SetCourseManageAuth(true);
                return(responseData);
            }
            if (myRole == null)
            {
                return(null);
            }
            switch (myRole.Level)
            {
            //如果是老師
            case 1:
                responseData = SetCourseManageAuth(false, true);
                return(responseData);

            //如果是助教
            case 2:
                responseData = SetCourseManageAuth(false, false, true);
                return(responseData);

            default:
                return(null);
            }
        }