64 lines
2.0 KiB
Ruby
64 lines
2.0 KiB
Ruby
class Budget::Investment::Exporter
|
|
require 'csv'
|
|
|
|
def initialize(investments)
|
|
@investments = investments
|
|
end
|
|
|
|
def to_csv
|
|
CSV.generate(headers: true) do |csv|
|
|
csv << headers
|
|
@investments.each { |investment| csv << csv_values(investment) }
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def headers
|
|
[
|
|
I18n.t("admin.budget_investments.index.list.id"),
|
|
I18n.t("admin.budget_investments.index.list.title"),
|
|
I18n.t("admin.budget_investments.index.list.supports"),
|
|
I18n.t("admin.budget_investments.index.list.admin"),
|
|
I18n.t("admin.budget_investments.index.list.valuator"),
|
|
I18n.t("admin.budget_investments.index.list.valuation_group"),
|
|
I18n.t("admin.budget_investments.index.list.geozone"),
|
|
I18n.t("admin.budget_investments.index.list.feasibility"),
|
|
I18n.t("admin.budget_investments.index.list.valuation_finished"),
|
|
I18n.t("admin.budget_investments.index.list.selected"),
|
|
I18n.t("admin.budget_investments.index.list.visible_to_valuators"),
|
|
I18n.t("admin.budget_investments.index.list.author_username")
|
|
]
|
|
end
|
|
|
|
def csv_values(investment)
|
|
[
|
|
investment.id.to_s,
|
|
investment.title,
|
|
investment.total_votes.to_s,
|
|
admin(investment),
|
|
investment.assigned_valuators || '-',
|
|
investment.assigned_valuation_groups || '-',
|
|
investment.heading.name,
|
|
price(investment),
|
|
investment.valuation_finished? ? I18n.t('shared.yes') : I18n.t('shared.no'),
|
|
investment.selected? ? I18n.t('shared.yes') : I18n.t('shared.no'),
|
|
investment.visible_to_valuators? ? I18n.t('shared.yes') : I18n.t('shared.no'),
|
|
investment.author.username
|
|
]
|
|
end
|
|
|
|
def admin(investment)
|
|
if investment.administrator.present?
|
|
investment.administrator.name
|
|
else
|
|
I18n.t("admin.budget_investments.index.no_admin_assigned")
|
|
end
|
|
end
|
|
|
|
def price(investment)
|
|
price_string = "admin.budget_investments.index.feasibility.#{investment.feasibility}"
|
|
I18n.t(price_string, price: investment.formatted_price)
|
|
end
|
|
end
|