Files
nairobi/db/dev_seeds/budgets.rb
2018-06-27 16:49:27 +02:00

133 lines
4.9 KiB
Ruby

section "Creating Budgets" do
Budget.create(
name: "#{I18n.t('seeds.budgets.budget')} #{Date.current.year - 1}",
currency_symbol: I18n.t('seeds.budgets.currency'),
phase: 'finished'
)
Budget.create(
name: "#{I18n.t('seeds.budgets.budget')} #{Date.current.year}",
currency_symbol: I18n.t('seeds.budgets.currency'),
phase: 'accepting'
)
Budget.all.each do |budget|
city_group = budget.groups.create!(name: I18n.t('seeds.budgets.groups.all_city'))
city_group.headings.create!(name: I18n.t('seeds.budgets.groups.all_city'),
price: 1000000,
population: 1000000)
districts_group = budget.groups.create!(name: I18n.t('seeds.budgets.groups.districts'))
districts_group.headings.create!(name: I18n.t('seeds.geozones.north_district'),
price: rand(5..10) * 100000,
population: 350000)
districts_group.headings.create!(name: I18n.t('seeds.geozones.west_district'),
price: rand(5..10) * 100000,
population: 300000)
districts_group.headings.create!(name: I18n.t('seeds.geozones.east_district'),
price: rand(5..10) * 100000,
population: 200000)
districts_group.headings.create!(name: I18n.t('seeds.geozones.central_district'),
price: rand(5..10) * 100000,
population: 150000)
end
end
section "Creating Investments" do
tags = Faker::Lorem.words(10)
100.times do
heading = Budget::Heading.all.sample
investment = Budget::Investment.create!(
author: User.all.sample,
heading: heading,
group: heading.group,
budget: heading.group.budget,
title: Faker::Lorem.sentence(3).truncate(60),
description: "<p>#{Faker::Lorem.paragraphs.join('</p><p>')}</p>",
created_at: rand((Time.current - 1.week)..Time.current),
feasibility: %w{undecided unfeasible feasible feasible feasible feasible}.sample,
unfeasibility_explanation: Faker::Lorem.paragraph,
valuation_finished: [false, true].sample,
tag_list: tags.sample(3).join(','),
price: rand(1..100) * 100000,
skip_map: "1",
terms_of_service: "1"
)
end
end
section "Marking investments as visible to valuators" do
(1..50).to_a.sample.times do
Budget::Investment.reorder("RANDOM()").first.update(visible_to_valuators: true)
end
end
section "Geolocating Investments" do
Budget.all.each do |budget|
budget.investments.each do |investment|
MapLocation.create(latitude: Setting['map_latitude'].to_f + rand(-10..10)/100.to_f,
longitude: Setting['map_longitude'].to_f + rand(-10..10)/100.to_f,
zoom: Setting['map_zoom'],
investment_id: investment.id)
end
end
end
section "Balloting Investments" do
Budget.finished.first.investments.last(20).each do |investment|
investment.update(selected: true, feasibility: "feasible")
end
end
section "Winner Investments" do
budget = Budget.finished.first
50.times do
heading = budget.headings.all.sample
Budget::Investment.create!(
author: User.all.sample,
heading: heading,
group: heading.group,
budget: heading.group.budget,
title: Faker::Lorem.sentence(3).truncate(60),
description: "<p>#{Faker::Lorem.paragraphs.join('</p><p>')}</p>",
created_at: rand((Time.current - 1.week)..Time.current),
feasibility: "feasible",
valuation_finished: true,
selected: true,
price: rand(10000..heading.price),
skip_map: "1",
terms_of_service: "1"
)
end
budget.headings.each do |heading|
Budget::Result.new(budget, heading).calculate_winners
end
end
section "Creating Valuation Assignments" do
(1..50).to_a.sample.times do
Budget::Investment.all.sample.valuators << Valuator.first
end
end
section "Creating investment milestones" do
Budget::Investment.all.each do |investment|
milestone = Budget::Investment::Milestone.new(investment_id: investment.id, publication_date: Date.tomorrow)
I18n.available_locales.map do |locale|
neutral_locale = locale.to_s.downcase.underscore.to_sym
Globalize.with_locale(neutral_locale) do
milestone.description = "Description for locale #{locale}"
milestone.title = I18n.l(Time.current, format: :datetime)
milestone.save!
end
end
end
end
section "Creating default Investment Milestone Statuses" do
Budget::Investment::Status.create(name: I18n.t('seeds.budgets.statuses.studying_project'))
Budget::Investment::Status.create(name: I18n.t('seeds.budgets.statuses.bidding'))
Budget::Investment::Status.create(name: I18n.t('seeds.budgets.statuses.executing_project'))
Budget::Investment::Status.create(name: I18n.t('seeds.budgets.statuses.executed'))
end