foodcoops/foodsoft

View on GitHub
app/lib/users_csv.rb

Summary

Maintainability
A
35 mins
Test Coverage
class UsersCsv < RenderCsv
  include ApplicationHelper

  def header
    row = [
      User.human_attribute_name(:id),
      User.human_attribute_name(:name),
      User.human_attribute_name(:nick),
      User.human_attribute_name(:first_name),
      User.human_attribute_name(:last_name),
      User.human_attribute_name(:email),
      User.human_attribute_name(:phone),
      User.human_attribute_name(:last_login),
      User.human_attribute_name(:last_activity),
      User.human_attribute_name(:iban),
      User.human_attribute_name(:ordergroup)
    ]
    row + User.custom_fields.pluck(:label)
  end

  def data
    @object.each do |o|
      row = [
        o.id,
        o.name,
        o.nick,
        o.first_name,
        o.last_name,
        o.email,
        o.phone,
        o.last_login,
        o.last_activity,
        o.iban,
        o.ordergroup&.name
      ]
      yield row + User.custom_fields.map { |f| o.settings.custom_fields[f[:name]] }
    end
  end
end