81 lines
2.4 KiB
Ruby
81 lines
2.4 KiB
Ruby
class Budget::Investment::Exporter
|
|
require "csv"
|
|
include JsonExporter
|
|
|
|
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
|
|
|
|
def model
|
|
Budget::Investment
|
|
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}"
|
|
if investment.feasible?
|
|
"#{I18n.t(price_string)} (#{investment.formatted_price})"
|
|
else
|
|
I18n.t(price_string)
|
|
end
|
|
end
|
|
|
|
def json_values(investment)
|
|
{
|
|
id: investment.id,
|
|
title: investment.title,
|
|
description: strip_tags(investment.description)
|
|
}
|
|
end
|
|
end
|