class UpdateContributorAfterDelete < ActiveRecord::Migration
  def up
    Course.all.each do |course|
      if course.course_activities.count > 1
        course.members.each do |s|
          puts course.id
          puts course.name
          puts s.user_id
          # board_count = CourseActivity.where("user_id =? and course_id =? and course_act_type =?",s.student_id, course.id, "Message").count * 2
          # 发帖数
          board_count = Message.find_by_sql("select DISTINCT me.* from messages me, boards b where b.id = me.board_id and b.course_id = #{course.id} and b.project_id = '-1' and me.author_id = #{s.user_id} and me.parent_id is null;").count
          # 回帖数
          message_reply_count = Message.find_by_sql("select DISTINCT me.* from messages me, boards b where b.id = me.board_id and b.course_id = #{course.id} and b.project_id = '-1' and me.author_id = #{s.user_id} and me.parent_id is not null").count * 1
          # 新闻回复
          common_reply_count = Comment.find_by_sql("select cm.* from comments cm, news n where cm.author_id = #{s.user_id} and n.course_id = #{course.id} and cm.commented_id = n.id and cm.commented_type ='News'").count * 1
          # 通知
          common_count = News.find_by_sql("select n.* from news n where n.author_id = #{s.user_id} and n.course_id = #{course.id} ").count * 1
          # attachment_count = CourseActivity.where("user_id =? and course_id =? and course_act_type =?", s.student_id, course.id, "Attachment").count * 5
          # 附件数
          attachment_count = Attachment.find_by_sql("SELECT * FROM `attachments` where container_id = #{course.id} and author_id = #{s.user_id} and container_type ='Course'").count
          # 课程留言数
          journal_count = JournalsForMessage.where("user_id =? and jour_id =? and jour_type =? ", s.user_id, course.id, "Course").count * 1
          # 作业留言
          journal_homework_count = JournalsForMessage.find_by_sql("SELECT jfm.* FROM `journals_for_messages` jfm, homework_commons hc where hc.id = jfm.jour_id and hc.course_id =#{course.id} and jfm.user_id =#{s.user_id} and jfm.jour_type ='HomeworkCommon';").count * 1
          # journal_count = CourseActivity.where("user_id =? and course_id =? and course_act_type =?", s.student_id, course.id, "JournalsForMessage").count * 1
          # journal_reply_count = JournalsForMessage.where("user_id =? and jour_id =? and jour_type =? and status =?", s.student_id, course.id, "Course",1).count * 1
          total =   board_count + message_reply_count + common_reply_count + attachment_count + journal_count
          course_contributor = CourseContributorScore.where("course_id =? and user_id =?", course.id, s.user_id).first
          if course_contributor.nil?
            CourseContributorScore.create(:course_id => course.id, :user_id => s.user_id, :message_num => board_count, :message_reply_num => message_reply_count,
                                          :news_reply_num => common_reply_count, :news_num => common_count, :resource_num => attachment_count, :journal_num => journal_count,
                                          :homework_journal_num => journal_homework_count, :journal_reply_num => 0, :total_score => total)
          else
            course_contributor.message_num = board_count
            course_contributor.message_reply_num = message_reply_count
            course_contributor.news_reply_num = common_reply_count
            course_contributor.news_num = common_count
            course_contributor.resource_num = attachment_count
            course_contributor.journal_num = journal_count
            course_contributor.homework_journal_num = journal_homework_count
            course_contributor.save
          end
        end
      end
    end
  end

  def down
  end
end
