@ -7,26 +7,27 @@ module CoursesHelper
3 . define search by roles
4 . define search member function
= end
TeacherRoles = [ 3 , 4 , 7 , 9 ]
StudentRoles = [ 5 , 10 ]
AllPeople = StudentRoles + TeacherRoles
#TeacherRoles = [3, 4, 7, 9 ]
#StudentRoles = [5, 10 ]
#AllPeople = StudentRoles+ TeacherRoles
## return people count
# 返回x项目成员数量, 即roles表中定义的所有成员
def projectCount project
searchCountByRoles project , AllPeople
#searchCountByRoles project, AllPeople
project . members . count
end
# 返回教师数量, 即roles表中定义的Manager
def teacherCount project
search CountByRoles project , TeacherRoles
search TeacherAndAssistant( project ) . count
# or
# searchTeacherAndAssistant(project).count
end
# 返回学生数量, 即roles表中定义的Reporter
def studentCount project
search CountByRoles project , StudentRoles
search Student( project ) . count
# or
# searchStudent(project).count
end
@ -133,28 +134,38 @@ module CoursesHelper
# =====================================================================================
# return people list
def searchTeacherAndAssistant project
searchPeopleByRoles ( project , TeacherRoles )
#searchPeopleByRoles(project, TeacherRoles)
members = [ ]
project . members . each do | m |
members << m if m && m . user && m . user . allowed_to? ( :as_teacher , project )
end
members
end
def searchStudent project
searchPeopleByRoles ( project , StudentRoles )
end
# =====================================================================================
def searchCountByRoles project , roles_id
members = searchPeopleByRoles project , roles_id
members . count
end
def searchPeopleByRoles project , roles_id
#searchPeopleByRoles(project, StudentRoles)
members = [ ]
begin
members = project . members . joins ( :member_roles ) . where ( " member_roles.role_id IN (:role_id) " , { :role_id = > roles_id } )
rescue Exception = > e
logger . error " [CoursesHelper] ===> #{ e } "
project . members . each do | m |
members << m if m && m . user && m . user . allowed_to? ( :as_student , project )
end
members
end
# =====================================================================================
#def searchCountByRoles project, roles_id
# members = searchPeopleByRoles project, roles_id
# members.count
#end
#def searchPeopleByRoles project, roles_id
# members = []
# begin
# members = project.members.joins(:member_roles).where("member_roles.role_id IN (:role_id)", {:role_id => roles_id})
# rescue Exception => e
# logger.error "[CoursesHelper] ===> #{e}"
# end
# members
#end
def sort_courses ( state )
content = '' . html_safe
@ -186,15 +197,15 @@ module CoursesHelper
end
#useless
def searchMembersByRole project , role_id
members = [ ]
begin
members = project . members . joins ( :member_roles ) . where ( " member_roles.role_id = :role_id " , { :role_id = > role_id } )
rescue Exception = > e
logger . error " [CoursesHelper] ===> #{ e } "
end
members
end
#def searchMembersByRole project, role_id
# members = []
# begin
# members = project.members.joins(:member_roles).where("member_roles.role_id = :role_id", {:role_id => role_id })
# rescue Exception => e
# logger.error "[CoursesHelper] ===> #{e}"
# end
# members
# end
def sort_course ( state , school_id )
content = '' . html_safe
@ -270,9 +281,10 @@ module CoursesHelper
def find_by_extra_from_project extra
Course . find_by_extra ( try ( extra ) )
end
#判断 制 定用户是不是当前课程的老师
#判断 指 定用户是不是当前课程的老师
def is_course_teacher ( user , course )
course . members . joins ( :member_roles ) . where ( " member_roles.role_id IN (:role_id) and members.user_id = #{ user . id } " , { :role_id = > TeacherRoles } ) . count != 0
#course.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and members.user_id = #{user.id}", {:role_id => TeacherRoles}).count != 0
user . allowed_to? ( :as_teacher , course )
#修改为根据用户是否有发布任务的权限来判断用户是否是课程的老师
#is_teacher = false
#@membership = user.memberships.all(:conditions => Project.visible_condition(User.current))
@ -287,7 +299,8 @@ module CoursesHelper
end
#当前用户是不是指定课程的学生
def is_cur_course_student course
course . members . joins ( :member_roles ) . where ( " member_roles.role_id IN (:role_id) and members.user_id = #{ User . current . id } " , { :role_id = > StudentRoles } ) . count != 0
#course.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and members.user_id = #{User.current.id}", {:role_id => StudentRoles}).count != 0
! ( User . current . allowed_to? ( :as_teacher , course ) )
#修改:能新建占位且不能新建任务的角色判定为学生
#is_student = false
#@membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current))
@ -329,7 +342,10 @@ module CoursesHelper
#获取作业的互评得分
def student_score_for_homework homework
member = searchPeopleByRoles ( homework . bid . courses . first , TeacherRoles ) . first
member = searchTeacherAndAssistant ( homework . bid . courses . first ) . first #searchPeopleByRoles(homework.bid.courses.first,TeacherRoles).first
if member . nil?
return " 0.00 "
end
student_stars = homework . rates ( :quality ) . where ( " rater_id <> #{ member . user_id } " ) . select ( " stars " )
student_stars_count = 0
student_stars . each do | star |
@ -340,7 +356,10 @@ module CoursesHelper
#获取作业的教师评分
def teacher_score_for_homework homework
member = searchPeopleByRoles ( homework . bid . courses . first , TeacherRoles ) . first
member = searchTeacherAndAssistant ( homework . bid . courses . first ) . first #searchPeopleByRoles(homework.bid.courses.first,TeacherRoles).first
if member . nil?
return " 0.00 "
end
teacher_stars = homework . rates ( :quality ) . where ( " rater_id = #{ member . user_id } " ) . select ( " stars " ) . first
return format ( " %.2f " , teacher_stars == nil ? 0 : teacher_stars . stars )
end