|
|
|
@ -1,3 +1,4 @@
|
|
|
|
|
#coding=utf-8
|
|
|
|
|
class CoursesService
|
|
|
|
|
include ApplicationHelper
|
|
|
|
|
include CoursesHelper
|
|
|
|
@ -344,27 +345,67 @@ class CoursesService
|
|
|
|
|
else
|
|
|
|
|
membership = @user.coursememberships.all(:conditions => Course.visible_condition(current_user))
|
|
|
|
|
end
|
|
|
|
|
if membership.nil? || membership.count == 0
|
|
|
|
|
raise l(:label_no_courses,:locale => current_user.language.nil? ? 'zh':current_user.language)
|
|
|
|
|
end
|
|
|
|
|
membership.sort! {|older, newer| newer.created_on <=> older.created_on }
|
|
|
|
|
result = []
|
|
|
|
|
membership.each do |mp|
|
|
|
|
|
course = mp.course
|
|
|
|
|
unless current_user.nil? || !(current_user.admin? || course.is_public == 1 || (course.is_public == 0 && current_user.member_of_course?(course)))
|
|
|
|
|
count,is_teacher = get_course_anonymous_evaluation current_user,course
|
|
|
|
|
if is_teacher
|
|
|
|
|
student_commit_number = count
|
|
|
|
|
else
|
|
|
|
|
need_anonymous_comments_count = count
|
|
|
|
|
latest_course_dynamics = []
|
|
|
|
|
latest_news = course.news.order("created_on desc").first
|
|
|
|
|
unless latest_news.nil?
|
|
|
|
|
latest_course_dynamics << {:type => 1,:time => latest_news.created_on,:message => '最近更新了通知' }#l(:label_recently_updated_notification,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
|
|
|
|
end
|
|
|
|
|
latest_message = course.journals_for_messages.order("created_on desc").first
|
|
|
|
|
unless latest_message.nil?
|
|
|
|
|
latest_course_dynamics << {:type => 2,:time => latest_message.created_on,:message => '最近更新了留言'}#l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
|
|
|
|
end
|
|
|
|
|
latest_attachment = course.attachments.order("created_on desc").first
|
|
|
|
|
unless latest_attachment.nil?
|
|
|
|
|
latest_course_dynamics << {:type => 3,:time => latest_attachment.created_on,:message => '最近更新了课件'}#l(:label_recently_updated_courseware,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
|
|
|
|
end
|
|
|
|
|
latest_bid = course.homeworks.order('updated_on DESC').first
|
|
|
|
|
unless latest_bid.nil?
|
|
|
|
|
latest_course_dynamics << {:type => 4,:time => latest_bid.updated_on,:message => '最近更新了作业'}#l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
|
|
|
|
end
|
|
|
|
|
#每个作业中的最新留言
|
|
|
|
|
messages = []
|
|
|
|
|
course.homeworks.each do |bid|
|
|
|
|
|
jour = bid.journals_for_messages.order("created_on desc").first
|
|
|
|
|
unless jour.nil?
|
|
|
|
|
messages << jour
|
|
|
|
|
end
|
|
|
|
|
news_count = course.news.count
|
|
|
|
|
message_count = course.journals_for_messages.count
|
|
|
|
|
|
|
|
|
|
result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 1,:count => message_count}
|
|
|
|
|
result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 2,:count => need_anonymous_comments_count}
|
|
|
|
|
result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 3,:count => student_commit_number}
|
|
|
|
|
result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 4,:count => news_count}
|
|
|
|
|
#{:course_name => course.name,:need_anonymous_comments_count=>need_anonymous_comments_count,:student_commit_number=>student_commit_number,:news_count=> news_count,:message_count=>message_count}
|
|
|
|
|
end
|
|
|
|
|
unless messages.count == 0
|
|
|
|
|
messages.sort!{|order,newer| newer.created_on <=> order.created_on}
|
|
|
|
|
end
|
|
|
|
|
latest_bid_message = messages.first
|
|
|
|
|
unless latest_bid_message.nil?
|
|
|
|
|
latest_course_dynamics << {:type => 2,:time => latest_bid_message.created_on,:message => '最近更新了留言'}#l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
|
|
|
|
end
|
|
|
|
|
#每个作业中学生最后提交的作业
|
|
|
|
|
homeworks = []
|
|
|
|
|
course.homeworks.each do |bid|
|
|
|
|
|
homework_attach = bid.homeworks.order('updated_at DESC').first
|
|
|
|
|
unless homework_attach.nil?
|
|
|
|
|
homeworks << homework_attach
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
unless homeworks.count == 0
|
|
|
|
|
homeworks.sort!{|order,newer| newer.updated_at <=> order.updated_at}
|
|
|
|
|
end
|
|
|
|
|
latest_homework_attach = homeworks.first
|
|
|
|
|
unless latest_homework_attach.nil?
|
|
|
|
|
latest_course_dynamics << {:type => 4,:time => latest_homework_attach.updated_at,:message => '最近更新了作业'}#l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)}
|
|
|
|
|
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),:type => latest_course_dynamic[:type],:update_time => latest_course_dynamic[:time],:message => latest_course_dynamic[:message],:count => nil}
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
result.sort!{|order,newer| newer[:update_time] <=> order[:update_time]}
|
|
|
|
|
result
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|