@ -615,9 +615,102 @@ class CoursesService
homework_scores
homework_scores
end
end
#app新版api
#
#
#课程动态
public
def all_course_dynamics params , current_user
#获取当前用户的所有课程
@user = User . find ( params [ :id ] )
if current_user . nil? && ! current_user . admin? && ! @user . active?
raise '404'
return
end
if current_user == @user || current_user . admin?
membership = @user . coursememberships . all
else
membership = @user . coursememberships . all ( :conditions = > Course . visible_condition ( current_user ) )
end
if membership . nil? || membership . count == 0
raise l ( :label_no_courses , :locale = > get_user_language ( current_user ) )
end
membership . sort! { | older , newer | newer . created_on < = > older . created_on }
#定义一个数组集合, 存放hash数组, 该hash数组包括课程的信息, 并包含课程的最新发布的资源, 最新的讨论区留言, 最新的作业, 最新的通知
result = [ ]
#对用户所有的课程进行循环,找到每个课程最新发布的资源,最新的讨论区留言,最新的作业,最新的通知,并存进数组
membership . each do | mp |
course = mp . course
latest_course_dynamics = [ ]
dynamics_count = 0
# 课程通知
latest_news = course . news . order ( " created_on desc " ) . first
unless latest_news . nil?
latest_course_dynamics << { :type = > 1 , :time = > latest_news . created_on , :count = > course . news . count ,
:news = > latest_news }
dynamics_count += 1
end
# 课程讨论区
latest_message = course . journals_for_messages . where ( " m_parent_id is null " ) . order ( " created_on desc " ) . first
unless latest_message . nil?
latest_course_dynamics << { :type = > 2 , :time = > latest_message . created_on , :count = > course . journals_for_messages . where ( 'm_parent_id is null' ) . count , :jour_message = > latest_message }
dynamics_count += 1
end
# 课程资源
latest_attachment = course . attachments . order ( " created_on desc " ) . first
unless latest_attachment . nil?
latest_course_dynamics << { :type = > 3 , :time = > latest_attachment . created_on , :count = > course . attachments . count , :documents = > latest_attachment }
dynamics_count += 1
end
#课程作业 已经交的学生列表( 暂定显示6人) , 未交的学生列表, 作业的状态
homework = course . homework_commons . order ( 'created_at desc' ) . first
homework_status = " " ;
# 判断作业所处的状态,如果是刚发布,就获取剩余时间
#如果是匿评状态,显示正在匿评
#如果是匿评结束,显示匿评结束
#获取作业提交的前6个人, 不足6个显示所有
studentlist = [ ]
if ! homework . nil?
if homework . homework_type == 1 && homework . homework_detail_manual
case homework . homework_detail_manual . comment_status
when 1
homework_status = show_homework_deadline homework
when 2
homework_status = " 正在匿评中 "
when 3
homework_status = " 匿评已结束 "
end
elsif homework . homework_type == 0
homework_status = " 未启用匿评 "
elsif homework . homework_type == 2
homework_status = " 编程作业 "
else
end
# 获取提交作业的前六个学生的名字 和 头像路径
homework . student_works . order ( " created_at desc " ) . page ( 1 ) . per ( 6 ) . each do | work |
studentlist << { :image_url = > url_to_avatar ( work . user ) , :user_name = > work . user . realname }
end
latest_course_dynamics << { :type = > 4 , :time = > homework . updated_at , :count = > course . homework_commons . count , :submit_count = > homework . student_works . count , :homework = > homework , :homework_status = > homework_status , :studentlist = > studentlist }
dynamics_count += 1
end
latest_course_dynamics . sort! { | order , newer | newer [ :time ] < = > order [ :time ] }
latest_course_dynamic = latest_course_dynamics . first
unless latest_course_dynamic . nil?
result << { :course_name = > course . name , :course_id = > course . id , :course_img_url = > url_to_avatar ( course ) , :course_time = > course . time , :course_term = > course . term , :message = > dynamics_count , :dynamics = > latest_course_dynamics , :count = > dynamics_count }
end
end
#返回数组集合
result . sort! { | order , newer | newer [ :update_time ] < = > order [ :update_time ] }
result
end
#计算作业的截止日期,剩余日期
def show_homework_deadline homework
" 截止日期: " << homework . end_time . to_s << " ,剩余时间: " << ( Date . parse ( Time . now . to_s ) - Date . parse ( homework . end_time . to_s ) ) . to_i . to_s << " 天 "
end
end
end