class Admins::ImportUserExcel < BaseImportXlsx
  UserData = Struct.new(:student_id, :name, :department_name, :identity, :technical_title, :phone)

  def read_each(&block)
    sheet.each_row_streaming(pad_cells: true, offset: 3) do |row|
      data = row.map(&method(:cell_value))[0..5]
      block.call UserData.new(*data)
    end
  end

  def school
    @school ||= begin
      school_id = sheet.cell(1, 1).to_s.strip
      school_name = sheet.cell(1, 2).to_s.strip

      School.find_by(id: school_id, name: school_name)
    end
  end

  def identifier
    @_identifier ||= sheet.cell(2, 1).to_s.strip
  end

  private

  def check_sheet_valid!
    raise_import_error('请按照模板格式导入') if school.blank?
  end

  def cell_value(obj)
    obj&.cell_value
  end
end