class Ecs::CreateCourseManagerService < ApplicationService
  Error = Class.new(StandardError)

  COURSE_MANAGER_COUNT_LIMIT = 2  # 课程管理员数量限制

  attr_reader :ec_course, :user_ids

  def initialize(ec_course, user_ids)
    @ec_course = ec_course
    @user_ids  = user_ids
  end

  def call
    users_count = User.where(id: user_ids).count
    raise Error, '用户不存在' if users_count != user_ids.size

    if ec_course.ec_course_users.exists?(user_id: user_ids)
      raise Error, '用户已经是该课程的管理员'
    end

    if ec_course.ec_course_users.count + user_ids.size > COURSE_MANAGER_COUNT_LIMIT
      raise Error, "课程管理员数量过多(最多#{COURSE_MANAGER_COUNT_LIMIT})"
    end

    ActiveRecord::Base.transaction do
      user_ids.each do |user_id|
        ec_course.ec_course_users.create!(user_id: user_id)
      end
    end
  end
end