# 工程认证课程达成度计算--课程评估标准
# status: 1 单次考核总成绩支撑课程目标， 2 单次考核的某分项成绩支撑课程目标
# score_type: 1：导入的是明细成绩  2：导入的是平均成绩
class EcCourseEvaluation < ApplicationRecord
  belongs_to :ec_course
  # 考核分项
  has_many :ec_course_evaluation_subitems, dependent: :destroy
  has_many :ec_student_achievements

  enum status: { partly: 1, totality: 2 }, _suffix: :support # :partly_support?, :totality_support?
  enum score_type: { detail: 1, average: 2 }, _suffix: :score_type # :detail_score_type?, :average_score_type?

  accepts_nested_attributes_for :ec_course_evaluation_subitems, allow_destroy: true
  alias_attribute :evaluation_count, :evluation_count

  def imported?
    import_status?
  end

  def evaluation_relates
    # 总成绩支撑只有课程考核标准的名称， 分项成绩支撑是课程考核标准名称与考核分项的笛卡尔积
    if status == 1
      return evaluation_count.times.map { |index| { id: -1, name: "#{name}（#{index + 1}）", position: index + 1 } }
    end

    if is_course_type?
      ec_course_evaluation_subitems.map.with_index { |item, index| { id: item.id, name: item.name, position: index + 1 } }
    else
      data = []
      ec_course_evaluation_subitems.each do |item|
        evaluation_count.times do |i|
          data << { id: item.id, name: "#{name}（#{i + 1}）#{item.name}", position: i + 1 }
        end
      end
      data
    end
  end
end
