70 lines
2.3 KiB
Ruby
70 lines
2.3 KiB
Ruby
class MigrateSpendingProposalsToInvestments
|
|
|
|
def import(sp)
|
|
budget = Budget.last || Budget.create!(name: Date.current.year.to_s, currency_symbol: "€")
|
|
|
|
group = nil
|
|
heading = nil
|
|
|
|
if sp.geozone_id.present?
|
|
group = budget.groups.find_or_create_by!(name: "Barrios")
|
|
heading = group.headings.find_or_create_by!(name: sp.geozone.name, price: 10000000)
|
|
else
|
|
group = budget.groups.find_or_create_by!(name: "Toda la ciudad")
|
|
heading = group.headings.find_or_create_by!(name: "Toda la ciudad", price: 10000000)
|
|
end
|
|
|
|
feasibility = case sp.feasible
|
|
when FalseClass
|
|
'unfeasible'
|
|
when TrueClass
|
|
'feasible'
|
|
else
|
|
'undecided'
|
|
end
|
|
|
|
investment = Budget::Investment.create!(
|
|
heading_id: heading.id,
|
|
author_id: sp.author_id,
|
|
administrator_id: sp.administrator_id,
|
|
title: sp.title,
|
|
description: sp.description,
|
|
external_url: sp.external_url,
|
|
price: sp.price,
|
|
price_explanation: sp.price_explanation,
|
|
internal_comments: sp.internal_comments,
|
|
duration: sp.time_scope,
|
|
feasibility: feasibility,
|
|
unfeasibility_explanation: sp.feasible_explanation,
|
|
valuation_finished: sp.valuation_finished,
|
|
price_first_year: sp.price_first_year,
|
|
cached_votes_up: sp.cached_votes_up,
|
|
physical_votes: sp.physical_votes,
|
|
created_at: sp.created_at,
|
|
updated_at: sp.updated_at,
|
|
responsible_name: sp.responsible_name,
|
|
terms_of_service: "1"
|
|
)
|
|
|
|
investment.valuators = sp.valuation_assignments.map(&:valuator)
|
|
|
|
votes = ActsAsVotable::Vote.where(votable_type: 'SpendingProposal', votable_id: sp.id)
|
|
|
|
votes.each {|v| investment.vote_by(voter: v.voter, vote: 'yes') }
|
|
|
|
# Spending proposals are not commentable in Consul so we can not test this
|
|
#
|
|
# Comment.where(commentable_type: 'SpendingProposal', commentable_id: sp.id).update_all(
|
|
# commentable_type: 'Budget::Investment', commentable_id: investment.id
|
|
# )
|
|
# Budget::Investment.reset_counters(investment.id, :comments)
|
|
|
|
# Spending proposals have ballot_lines in Madrid, but not in consul, so we
|
|
# can not test this either
|
|
|
|
investment
|
|
end
|
|
|
|
end
|
|
|