Compare commits
2 Commits
ae1ae89a97
...
a4a427ad5c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a4a427ad5c | ||
|
|
1fc3311ca9 |
@@ -1,7 +1,7 @@
|
|||||||
class CreatePromotionCodes < ActiveRecord::Migration[8.0]
|
class CreatePromotionCodes < ActiveRecord::Migration[8.0]
|
||||||
def change
|
def change
|
||||||
create_table :promotion_codes do |t|
|
create_table :promotion_codes do |t|
|
||||||
t.string :code, null: false, unique: true
|
t.string :code, null: false
|
||||||
t.integer :discount_amount_cents, null: false, default: 0
|
t.integer :discount_amount_cents, null: false, default: 0
|
||||||
t.datetime :expires_at
|
t.datetime :expires_at
|
||||||
t.boolean :active, default: true, null: false
|
t.boolean :active, default: true, null: false
|
||||||
@@ -11,6 +11,7 @@ class CreatePromotionCodes < ActiveRecord::Migration[8.0]
|
|||||||
t.datetime :updated_at, null: false
|
t.datetime :updated_at, null: false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Unique index for code
|
||||||
add_index :promotion_codes, :code, unique: true
|
add_index :promotion_codes, :code, unique: true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
28
db/schema.rb
generated
28
db/schema.rb
generated
@@ -10,7 +10,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema[8.0].define(version: 2025_09_11_063815) do
|
ActiveRecord::Schema[8.0].define(version: 2025_09_28_181311) do
|
||||||
create_table "events", charset: "utf8mb4", collation: "utf8mb4_uca1400_ai_ci", force: :cascade do |t|
|
create_table "events", charset: "utf8mb4", collation: "utf8mb4_uca1400_ai_ci", force: :cascade do |t|
|
||||||
t.string "name", null: false
|
t.string "name", null: false
|
||||||
t.string "slug", null: false
|
t.string "slug", null: false
|
||||||
@@ -25,15 +25,24 @@ ActiveRecord::Schema[8.0].define(version: 2025_09_11_063815) do
|
|||||||
t.decimal "longitude", precision: 10, scale: 6, null: false
|
t.decimal "longitude", precision: 10, scale: 6, null: false
|
||||||
t.boolean "featured", default: false, null: false
|
t.boolean "featured", default: false, null: false
|
||||||
t.bigint "user_id", null: false
|
t.bigint "user_id", null: false
|
||||||
|
t.boolean "allow_booking_during_event", default: false, null: false
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.boolean "allow_booking_during_event", default: false, null: false
|
|
||||||
t.index ["featured"], name: "index_events_on_featured"
|
t.index ["featured"], name: "index_events_on_featured"
|
||||||
t.index ["latitude", "longitude"], name: "index_events_on_latitude_and_longitude"
|
t.index ["latitude", "longitude"], name: "index_events_on_latitude_and_longitude"
|
||||||
t.index ["state"], name: "index_events_on_state"
|
t.index ["state"], name: "index_events_on_state"
|
||||||
t.index ["user_id"], name: "index_events_on_user_id"
|
t.index ["user_id"], name: "index_events_on_user_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "order_promotion_codes", charset: "utf8mb4", collation: "utf8mb4_uca1400_ai_ci", force: :cascade do |t|
|
||||||
|
t.bigint "order_id", null: false
|
||||||
|
t.bigint "promotion_code_id", null: false
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
t.index ["order_id"], name: "index_order_promotion_codes_on_order_id"
|
||||||
|
t.index ["promotion_code_id"], name: "index_order_promotion_codes_on_promotion_code_id"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "orders", charset: "utf8mb4", collation: "utf8mb4_uca1400_ai_ci", force: :cascade do |t|
|
create_table "orders", charset: "utf8mb4", collation: "utf8mb4_uca1400_ai_ci", force: :cascade do |t|
|
||||||
t.bigint "user_id", null: false
|
t.bigint "user_id", null: false
|
||||||
t.bigint "event_id", null: false
|
t.bigint "event_id", null: false
|
||||||
@@ -51,6 +60,18 @@ ActiveRecord::Schema[8.0].define(version: 2025_09_11_063815) do
|
|||||||
t.index ["user_id"], name: "index_orders_on_user_id"
|
t.index ["user_id"], name: "index_orders_on_user_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "promotion_codes", charset: "utf8mb4", collation: "utf8mb4_uca1400_ai_ci", force: :cascade do |t|
|
||||||
|
t.string "code", null: false
|
||||||
|
t.integer "discount_amount_cents", default: 0, null: false
|
||||||
|
t.datetime "expires_at"
|
||||||
|
t.boolean "active", default: true, null: false
|
||||||
|
t.integer "usage_limit"
|
||||||
|
t.integer "uses_count", default: 0, null: false
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
t.index ["code"], name: "index_promotion_codes_on_code", unique: true
|
||||||
|
end
|
||||||
|
|
||||||
create_table "ticket_types", charset: "utf8mb4", collation: "utf8mb4_uca1400_ai_ci", force: :cascade do |t|
|
create_table "ticket_types", charset: "utf8mb4", collation: "utf8mb4_uca1400_ai_ci", force: :cascade do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.text "description"
|
t.text "description"
|
||||||
@@ -104,4 +125,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_09_11_063815) do
|
|||||||
t.index ["email"], name: "index_users_on_email", unique: true
|
t.index ["email"], name: "index_users_on_email", unique: true
|
||||||
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
|
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
add_foreign_key "order_promotion_codes", "orders"
|
||||||
|
add_foreign_key "order_promotion_codes", "promotion_codes"
|
||||||
end
|
end
|
||||||
|
|||||||
91
db/seeds.rb
91
db/seeds.rb
@@ -189,3 +189,94 @@ TicketType.find_or_create_by!(event: belle_epoque_event, name: "Paid Entry 10€
|
|||||||
end
|
end
|
||||||
|
|
||||||
puts "Created 1 promoter, 1 draft event with ticket types"
|
puts "Created 1 promoter, 1 draft event with ticket types"
|
||||||
|
|
||||||
|
# Create additional events fetched from Bizouk
|
||||||
|
konpa_event = Event.find_or_create_by!(name: "Konpa With Bev - Cours De Konpa Gouyad") do |e|
|
||||||
|
e.slug = "konpa-with-bev-cours-de-konpa-gouyad"
|
||||||
|
e.description = "Séance ouverte à tous, débutant ou initié, venez perfectionner votre Konpa avec la talentueuse Beverly."
|
||||||
|
e.venue_name = "Guest Live"
|
||||||
|
e.venue_address = "36 Rue Marcel Dassault, 93140 Bondy"
|
||||||
|
e.latitude = 48.9096
|
||||||
|
e.longitude = 2.4836
|
||||||
|
e.start_time = Time.parse("2025-10-03 19:00:00")
|
||||||
|
e.end_time = Time.parse("2025-10-03 23:00:00")
|
||||||
|
e.featured = false
|
||||||
|
e.image = "https://data.bizouk.com/cache1/events/images/10/79/61/081f38b583ac651f3a0930c5d8f13458_800_600_auto_97.png"
|
||||||
|
e.user = promoter
|
||||||
|
e.state = :published
|
||||||
|
end
|
||||||
|
|
||||||
|
caribbean_groove_event = Event.find_or_create_by!(name: "La Plus Grosse Soirée Caribbean Groove") do |e|
|
||||||
|
e.slug = "la-plus-grosse-soiree-caribbean-groove"
|
||||||
|
e.description = "La CARIBBEAN GROOVE de 23H00 à 5h00... DJ DON BREEZY Aux Platines HIPHOP , RnB, zouk ,kompa , Dancehall, Afro.beat"
|
||||||
|
e.venue_name = "LE TOUT LE MONDE EN PARLE"
|
||||||
|
e.venue_address = "4 RUE DU DEPART 75015 PARIS"
|
||||||
|
e.latitude = 48.8406
|
||||||
|
e.longitude = 2.2935
|
||||||
|
e.start_time = Time.parse("2025-10-03 23:00:00")
|
||||||
|
e.end_time = Time.parse("2025-10-04 05:00:00")
|
||||||
|
e.featured = false
|
||||||
|
e.image = "https://data.bizouk.com/cache1/events/images/10/83/15/fa5d43f0b1998f691181cfda8fe35213_800_600_auto_97.png"
|
||||||
|
e.user = promoter
|
||||||
|
e.state = :published
|
||||||
|
end
|
||||||
|
|
||||||
|
belle_epoque_october_event = Event.find_or_create_by!(name: "LA BELLE ÉPOQUE PAR SISLEY ÉVENTS - OCTOBRE") do |e|
|
||||||
|
e.slug = "la-belle-epoque-par-sisley-events-octobre"
|
||||||
|
e.description = "SAM 4 OCTOBRE LA BELLE ÉPOQUE de 18H à 2H sur le Rooftop LE PATIO LA Dernière de la Saison ÉVÈNEMENT EN PLEIN AIR Ambiance Rétro / old school : zouk , Ragga , kompa , Dancehall , hip hop , Groove , Rnb … Restauration disponible sur place : Accras ,Allocos , specialités asiatique , japonaise et une large carte de choix de Pizzas pour vous régaler ! ENTRÉE LIBRE POUR TOUS AV 21H TARIF D'ENTRÉE : 10€ SUR PLACE UNIQUEMENT Réservée aux + de 30 ans Suivez nous sur Instagram : Sisley Évents"
|
||||||
|
e.venue_name = "Le Patio"
|
||||||
|
e.venue_address = "38 Avenue Leon Gaumont, 93100 Montreuil"
|
||||||
|
e.latitude = 48.862336
|
||||||
|
e.longitude = 2.441218
|
||||||
|
e.start_time = Time.parse("2025-10-04 18:00:00")
|
||||||
|
e.end_time = Time.parse("2025-10-05 02:00:00")
|
||||||
|
e.featured = false
|
||||||
|
e.image = "https://data.bizouk.com/cache1/events/images/10/92/72/351e61b55603a4d142b43486216457c1_800_600_auto_97.jpg"
|
||||||
|
e.user = promoter
|
||||||
|
e.state = :published
|
||||||
|
e.allow_booking_during_event = true
|
||||||
|
end
|
||||||
|
|
||||||
|
# Create ticket types for the new events
|
||||||
|
# Konpa event ticket types
|
||||||
|
TicketType.find_or_create_by!(event: konpa_event, name: "General Admission") do |tt|
|
||||||
|
tt.description = "General admission ticket for Konpa With Bev"
|
||||||
|
tt.price_cents = 1500 # $15.00
|
||||||
|
tt.quantity = 50
|
||||||
|
tt.sale_start_at = Time.current
|
||||||
|
tt.sale_end_at = konpa_event.start_time - 1.hour
|
||||||
|
tt.minimum_age = 18
|
||||||
|
end
|
||||||
|
|
||||||
|
# Caribbean Groove event ticket types
|
||||||
|
TicketType.find_or_create_by!(event: caribbean_groove_event, name: "General Admission") do |tt|
|
||||||
|
tt.description = "General admission ticket for Caribbean Groove"
|
||||||
|
tt.price_cents = 2000 # $20.00
|
||||||
|
tt.quantity = 100
|
||||||
|
tt.sale_start_at = Time.current
|
||||||
|
tt.sale_end_at = caribbean_groove_event.start_time - 1.hour
|
||||||
|
tt.minimum_age = 18
|
||||||
|
end
|
||||||
|
|
||||||
|
# Belle Époque October event ticket types
|
||||||
|
TicketType.find_or_create_by!(event: belle_epoque_october_event, name: "Free Entry Before 9 PM") do |tt|
|
||||||
|
tt.description = "Free entry before 9 PM for La Belle Époque October"
|
||||||
|
tt.price_cents = 0
|
||||||
|
tt.quantity = 50
|
||||||
|
tt.sale_start_at = Time.current
|
||||||
|
tt.sale_end_at = belle_epoque_october_event.start_time + 3.hours
|
||||||
|
tt.minimum_age = 30
|
||||||
|
tt.requires_id = true
|
||||||
|
end
|
||||||
|
|
||||||
|
TicketType.find_or_create_by!(event: belle_epoque_october_event, name: "Entry 10€ After 9 PM") do |tt|
|
||||||
|
tt.description = "Entry ticket 10€ after 9 PM for La Belle Époque October"
|
||||||
|
tt.price_cents = 1000 # 10€
|
||||||
|
tt.quantity = 150
|
||||||
|
tt.sale_start_at = Time.current
|
||||||
|
tt.sale_end_at = belle_epoque_october_event.start_time + 8.hours
|
||||||
|
tt.minimum_age = 30
|
||||||
|
tt.requires_id = true
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Created 3 additional events from Bizouk with ticket types"
|
||||||
|
|||||||
Reference in New Issue
Block a user