154 lines
5.7 KiB
Ruby
154 lines
5.7 KiB
Ruby
INVESTMENT_IMAGE_FILES = %w{
|
|
brennan-ehrhardt-25066-unsplash_713x513.jpg
|
|
carl-nenzen-loven-381554-unsplash_713x475.jpg
|
|
carlos-zurita-215387-unsplash_713x475.jpg
|
|
hector-arguello-canals-79584-unsplash_713x475.jpg
|
|
olesya-grichina-218176-unsplash_713x475.jpg
|
|
sole-d-alessandro-340443-unsplash_713x475.jpg
|
|
}.map do |filename|
|
|
File.new(Rails.root.join("db",
|
|
"dev_seeds",
|
|
"images",
|
|
"budget",
|
|
"investments", filename))
|
|
end
|
|
|
|
def add_image_to(imageable)
|
|
# imageable should respond to #title & #author
|
|
imageable.image = Image.create!({
|
|
imageable: imageable,
|
|
title: imageable.title,
|
|
attachment: INVESTMENT_IMAGE_FILES.sample,
|
|
user: imageable.author
|
|
})
|
|
imageable.save
|
|
end
|
|
|
|
section "Creating Budgets" do
|
|
Budget.create(
|
|
name_en: "#{I18n.t("seeds.budgets.budget", locale: :en)} #{Date.current.year - 1}",
|
|
name_es: "#{I18n.t("seeds.budgets.budget", locale: :es)} #{Date.current.year - 1}",
|
|
currency_symbol: I18n.t("seeds.budgets.currency"),
|
|
phase: "finished"
|
|
)
|
|
|
|
Budget.create(
|
|
name_en: "#{I18n.t("seeds.budgets.budget", locale: :en)} #{Date.current.year}",
|
|
name_es: "#{I18n.t("seeds.budgets.budget", locale: :es)} #{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,
|
|
latitude: '40.416775',
|
|
longitude: '-3.703790')
|
|
|
|
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,
|
|
latitude: '40.416775',
|
|
longitude: '-3.703790')
|
|
districts_group.headings.create!(name: I18n.t('seeds.geozones.west_district'),
|
|
price: rand(5..10) * 100000,
|
|
population: 300000,
|
|
latitude: '40.416775',
|
|
longitude: '-3.703790')
|
|
districts_group.headings.create!(name: I18n.t('seeds.geozones.east_district'),
|
|
price: rand(5..10) * 100000,
|
|
population: 200000,
|
|
latitude: '40.416775',
|
|
longitude: '-3.703790')
|
|
districts_group.headings.create!(name: I18n.t('seeds.geozones.central_district'),
|
|
price: rand(5..10) * 100000,
|
|
population: 150000,
|
|
latitude: '40.416775',
|
|
longitude: '-3.703790')
|
|
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"
|
|
)
|
|
|
|
add_image_to(investment) if Random.rand > 0.5
|
|
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.find_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
|
|
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: "feasible",
|
|
valuation_finished: true,
|
|
selected: true,
|
|
price: rand(10000..heading.price),
|
|
skip_map: "1",
|
|
terms_of_service: "1"
|
|
)
|
|
add_image_to(investment) if Random.rand > 0.3
|
|
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
|