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