|
11 | 11 | end |
12 | 12 |
|
13 | 13 | p 'Seeding users...' |
14 | | -users = [] |
15 | | -4.times do |
16 | | - users << FactoryBot.create(:user) |
| 14 | +# Nederlandse testnamen |
| 15 | +dutch_names = [ |
| 16 | + 'Jan de Vries', |
| 17 | + 'Piet Bakker', |
| 18 | + 'Lisa Jansen', |
| 19 | + 'Emma van der Berg', |
| 20 | + 'Daan Visser', |
| 21 | + 'Sophie Smit', |
| 22 | + 'Thomas Mulder', |
| 23 | + 'Anna de Boer' |
| 24 | +] |
| 25 | + |
| 26 | +users = dutch_names.map do |name| |
| 27 | + FactoryBot.create(:user, name:) |
17 | 28 | end |
18 | 29 | users << FactoryBot.create(:user, name: 'Benjamin Knopje', birthday: 16.years.ago) |
19 | 30 |
|
20 | 31 | p 'Seeding activities...' |
21 | | -activities = [] |
22 | | -4.times do |
23 | | - activities << FactoryBot.create(:activity, price_list: price_lists.sample, created_by: users.sample) |
| 32 | +# Recente activiteiten |
| 33 | +activity_names = %w[Donderdagborrel Vrijdagborrel ALV Kerstdiner Filmavond Bierproeverij] |
| 34 | +activities = activity_names.map do |title| |
| 35 | + FactoryBot.create(:activity, title:, price_list: price_lists.sample, created_by: users.sample) |
| 36 | +end |
| 37 | + |
| 38 | +# Historische activiteiten (locked) |
| 39 | +p 'Seeding historical activities...' |
| 40 | +historical_activities = [ |
| 41 | + { title: 'Nieuwjaarsborrel', days_ago: 15 }, |
| 42 | + { title: 'Studiemiddag', days_ago: 30 }, |
| 43 | + { title: 'Kroegentocht', days_ago: 45 }, |
| 44 | + { title: 'Dies Natalis', days_ago: 90 } |
| 45 | +] |
| 46 | + |
| 47 | +historical_activities.each do |hist_act| |
| 48 | + start_time = hist_act[:days_ago].days.ago.beginning_of_hour |
| 49 | + end_time = (hist_act[:days_ago] - 1).days.ago.beginning_of_hour |
| 50 | + activity = FactoryBot.create(:activity, |
| 51 | + title: hist_act[:title], |
| 52 | + start_time:, |
| 53 | + end_time:, |
| 54 | + price_list: price_lists.sample, |
| 55 | + created_by: users.sample) |
| 56 | + activities << activity |
24 | 57 | end |
25 | 58 |
|
26 | 59 | p 'Seeding orders...' |
|
32 | 65 | end |
33 | 66 |
|
34 | 67 | p 'Seeding credit mutations...' |
| 68 | +# Realistische credit mutations met variatie |
| 69 | +mutation_descriptions = [ |
| 70 | + { description: 'Opwaardering', amount_range: 10..50 }, |
| 71 | + { description: 'Contant gestort', amount_range: 5..30 }, |
| 72 | + { description: 'iDEAL betaling', amount_range: 10..100 }, |
| 73 | + { description: 'Correctie admin', amount_range: -20..20 }, |
| 74 | + { description: 'Restitutie borrel', amount_range: 5..15 }, |
| 75 | + { description: 'Handmatige correctie', amount_range: -10..10 } |
| 76 | +] |
| 77 | + |
35 | 78 | users.each do |user| |
36 | | - FactoryBot.create_list(:credit_mutation, 3, user:, created_by: users.sample, |
37 | | - activity: (activities + [nil]).sample) |
| 79 | + 3.times do |
| 80 | + mutation = mutation_descriptions.sample |
| 81 | + amount = rand(mutation[:amount_range]) |
| 82 | + FactoryBot.create(:credit_mutation, |
| 83 | + user:, |
| 84 | + created_by: users.sample, |
| 85 | + description: mutation[:description], |
| 86 | + amount:, |
| 87 | + activity: (activities + [nil]).sample) |
| 88 | + end |
38 | 89 | end |
39 | 90 |
|
40 | 91 | p 'Seeding invoices' |
|
47 | 98 | Role.create(role_type: :treasurer) |
48 | 99 | Role.create(role_type: :renting_manager) |
49 | 100 | Role.create(role_type: :main_bartender) |
| 101 | + |
| 102 | +p 'Seeding Sofia accounts...' |
| 103 | +# Use environment variable for password or fallback to default for development |
| 104 | + |
| 105 | +treasurer_user = FactoryBot.create(:user, :sofia_account, name: 'Penningmeester Test') |
| 106 | +SofiaAccount.create!(username: 'penningmeester', password: 'password1234', user: treasurer_user) |
| 107 | +treasurer_role = Role.create(role_type: :treasurer) |
| 108 | +treasurer_user.roles << treasurer_role |
| 109 | + |
| 110 | +main_bartender_user = FactoryBot.create(:user, :sofia_account, name: 'Hoofdtapper Test') |
| 111 | +SofiaAccount.create!(username: 'hoofdtapper', password: 'password1234', user: main_bartender_user) |
| 112 | +main_bartender_role = Role.create(role_type: :main_bartender) |
| 113 | +main_bartender_user.roles << main_bartender_role |
| 114 | + |
| 115 | +renting_manager_user = FactoryBot.create(:user, :sofia_account, name: 'Verhuur Test') |
| 116 | +SofiaAccount.create!(username: 'verhuur', password: 'password1234', user: renting_manager_user) |
| 117 | +renting_manager_role = Role.create(role_type: :renting_manager) |
| 118 | +renting_manager_user.roles << renting_manager_role |
50 | 119 | # rubocop:enable Rails/Output |
0 commit comments