class Users::UpdateAccountForm
  include ActiveModel::Model

  attr_accessor :user
  attr_accessor :nickname, :name, :show_realname, :gender, :location, :location_city,
                :identity, :student_id, :technical_title, :school_id, :department_id

  validates :nickname, presence: true
  validates :name, presence: true
  validates :gender, presence: true, numericality: { only_integer: true }, inclusion: { in: [0, 1] }
  validates :location, presence: true
  validates :location_city, presence: true
  validates :identity, presence: true, numericality: { only_integer: true }, inclusion: { in: [0, 1, 2] }
  validates :technical_title, presence: true, unless: -> { identity == 1 }
  validates :student_id, presence: true, if: -> { identity == 1 }
  validates :school_id, presence: true

  validate :check_school_exist
  def check_school_exist
    return if school_id.blank?
    unless School.exists?(id: school_id)
      errors.add(:school_id, :not_exist)
    end
  end

  validate :check_department_exist
  def check_department_exist
    return if department_id.blank?
    unless Department.exists?(id: department_id)
      errors.add(:department_id, :not_exist)
    end
  end
end