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

  MAJOR_MANAGER_COUNT_LIMIT = 5  # 专业管理员数量限制

  attr_reader :major_school, :user_id

  def initialize(major_school, user_id)
    @major_school = major_school
    @user_id      = user_id
  end

  def call
    raise Error, '示例专业不能添加管理员' if major_school.template_major?

    user = User.find_by(id: params[:user_id])
    raise Error, '该用户不存在' if user.blank?

    if major_school.ec_major_school_users.exists?(user_id: user.id)
      raise Error, '该用户已经是该专业的管理员了'
    end

    if major_school.ec_major_school_users.count >= MAJOR_MANAGER_COUNT_LIMIT
      raise Error, '该专业管理员数量已达上限'
    end

    major_school.ec_major_school_users.create!(user: user)

    user
  end
end