Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> This commit refactors the entire application to replace the 'parties' concept with 'events'. All controllers, models, views, and related files have been updated to reflect this change. The parties table has been replaced with an events table, and all related functionality has been updated accordingly.
117 lines
3.9 KiB
Ruby
Executable File
117 lines
3.9 KiB
Ruby
Executable File
# This file should ensure the existence of records required to run the application in every environment (production,
|
|
# development, test). The code here should be idempotent so that it can be executed at any point in every environment.
|
|
# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
|
|
#
|
|
# Example:
|
|
#
|
|
# ["Action", "Comedy", "Drama", "Horror"].each do |genre_name|
|
|
# MovieGenre.find_or_create_by!(name: genre_name)
|
|
# end
|
|
|
|
# Create admin user for development
|
|
admin_user = User.find_or_create_by!(email: 'admin@example.com') do |u|
|
|
u.password = 'password'
|
|
u.password_confirmation = 'password'
|
|
u.last_name = nil
|
|
u.first_name = nil
|
|
end
|
|
|
|
# Create regular users for development
|
|
users = User.where.not(email: 'admin@example.com').limit(5)
|
|
missing_users_count = 5 - users.count
|
|
missing_users_count.times do |i|
|
|
User.find_or_create_by!(email: "user#{i + 1}@example.com") do |u|
|
|
u.password = 'password'
|
|
u.password_confirmation = 'password'
|
|
u.last_name = nil
|
|
u.first_name = nil
|
|
end
|
|
end
|
|
|
|
# Reload all users after creation
|
|
users = User.all.to_a
|
|
|
|
# Create sample parties
|
|
parties_data = [
|
|
{
|
|
name: "Summer Beach Party",
|
|
slug: "summer-beach-party",
|
|
description: "Join us for an amazing night at the beach with music, dancing, and cocktails.",
|
|
venue_name: "Sunset Beach Resort",
|
|
venue_address: "123 Ocean Drive, Miami, FL",
|
|
latitude: 25.7617,
|
|
longitude: -80.1918,
|
|
start_time: 1.day.from_now,
|
|
end_time: 1.day.from_now + 6.hours,
|
|
featured: true,
|
|
image: "https://fastly.picsum.photos/id/407/300/200.jpg?hmac=9EhoXMZ1QdwJue90vzxcjBg2YzsZsAWCjJ7oxOhtcU0",
|
|
user: users.first
|
|
},
|
|
{
|
|
name: "Rooftop Jazz Night",
|
|
slug: "rooftop-jazz-night",
|
|
description: "Experience smooth jazz under the stars at our exclusive rooftop venue.",
|
|
venue_name: "Skyline Rooftop Bar",
|
|
venue_address: "456 Downtown Ave, New York, NY",
|
|
latitude: 40.7128,
|
|
longitude: -74.0060,
|
|
start_time: 3.days.from_now,
|
|
end_time: 3.days.from_now + 4.hours,
|
|
featured: true,
|
|
image: "https://images.unsplash.com/photo-1511671782779-c97d3d27a1d4?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80",
|
|
user: users.second
|
|
},
|
|
{
|
|
name: "Warehouse Electronic Festival",
|
|
slug: "warehouse-electronic-festival",
|
|
description: "A night of electronic music and dancing in an industrial warehouse setting.",
|
|
venue_name: "Downtown Warehouse",
|
|
venue_address: "789 Industrial Blvd, Los Angeles, CA",
|
|
latitude: 34.0522,
|
|
longitude: -118.2437,
|
|
start_time: 1.week.from_now,
|
|
end_time: 1.week.from_now + 8.hours,
|
|
featured: false,
|
|
image: "https://images.unsplash.com/photo-1470225620780-dba8ba36b745?ixlib=rb-4.0.3&auto=format&fit=crop&w=800&q=80",
|
|
user: users.third
|
|
}
|
|
]
|
|
|
|
parties = []
|
|
parties_data.each do |party_data|
|
|
user = party_data.delete(:user)
|
|
party = Party.find_or_create_by!(name: party_data[:name]) do |p|
|
|
p.assign_attributes(party_data)
|
|
p.user = user
|
|
p.state = :published
|
|
end
|
|
parties << party
|
|
end
|
|
|
|
# Create ticket types for each party
|
|
parties.each_with_index do |party, index|
|
|
# General Admission ticket type
|
|
TicketType.find_or_create_by!(party: party, name: "General Admission") do |tt|
|
|
tt.description = "General admission ticket for #{party.name}"
|
|
tt.price_cents = 2500 # $25.00
|
|
tt.quantity = 100
|
|
tt.sale_start_at = 1.month.ago
|
|
tt.sale_end_at = party.start_time - 1.hour
|
|
tt.requires_id = false
|
|
tt.minimum_age = 18
|
|
end
|
|
|
|
# VIP ticket type
|
|
TicketType.find_or_create_by!(party: party, name: "VIP") do |tt|
|
|
tt.description = "VIP access ticket for #{party.name} with premium benefits"
|
|
tt.price_cents = 7500 # $75.00
|
|
tt.quantity = 20
|
|
tt.sale_start_at = 1.month.ago
|
|
tt.sale_end_at = party.start_time - 1.hour
|
|
tt.requires_id = true
|
|
tt.minimum_age = 21
|
|
end
|
|
end
|
|
|
|
puts "Created #{User.count} users, #{Party.count} parties, and #{TicketType.count} ticket types"
|