# app/controllers/concerns/excel_sanitizable.rb
module ExcelSanitizable
  extend ActiveSupport::Concern

  def sanitize_and_truncate_for_excel(text, max_length = 32_000)
    return "" if text.nil?

    sanitized = text.to_s.encode("UTF-8", invalid: :replace, undef: :replace, replace: "")
                    .delete("\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u000B\u000C\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F")
    sanitized.length > max_length ? "#{sanitized[0...max_length]}..." : sanitized
  end
end
