refactor(events): replace parties concept with events throughout the application

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.
This commit is contained in:
Kevin BATAILLE
2025-08-28 13:20:51 +02:00
parent 2f80fe8321
commit 30f3ecc6ad
218 changed files with 864 additions and 787 deletions

0
app/models/application_record.rb Normal file → Executable file
View File

0
app/models/concerns/.keep Normal file → Executable file
View File

24
app/models/party.rb → app/models/event.rb Normal file → Executable file
View File

@@ -1,11 +1,11 @@
# Party model representing nightlife events and parties
# Event model representing nightlife events and events
# Manages event details, location data, and publication state
class Party < ApplicationRecord
# Define states for party lifecycle management
# draft: Initial state when party is being created
# published: Party is visible to public and can be discovered
# canceled: Party has been canceled by organizer
# sold_out: Party has reached capacity and tickets are no longer available
class Event < ApplicationRecord
# Define states for Event lifecycle management
# draft: Initial state when Event is being created
# published: Event is visible to public and can be discovered
# canceled: Event has been canceled by organizer
# sold_out: Event has reached capacity and tickets are no longer available
enum :state, {
draft: 0,
published: 1,
@@ -18,7 +18,7 @@ class Party < ApplicationRecord
has_many :ticket_types, dependent: :destroy
has_many :tickets, through: :ticket_types
# Validations for party attributes
# Validations for Event attributes
# Basic information
validates :name, presence: true, length: { minimum: 3, maximum: 100 }
validates :slug, presence: true, length: { minimum: 3, maximum: 100 }
@@ -40,12 +40,12 @@ class Party < ApplicationRecord
less_than_or_equal_to: 180
}
# Scopes for querying parties with common filters
scope :featured, -> { where(featured: true) } # Get featured parties for homepage
scope :published, -> { where(state: :published) } # Get publicly visible parties
# Scopes for querying events with common filters
scope :featured, -> { where(featured: true) } # Get featured events for homepage
scope :published, -> { where(state: :published) } # Get publicly visible events
scope :search_by_name, ->(query) { where("name ILIKE ?", "%#{query}%") } # Search by name (case-insensitive)
# Scope for published parties ordered by start time
# Scope for published events ordered by start time
scope :upcoming, -> { published.where("start_time >= ?", Time.current).order(start_time: :asc) }
end

2
app/models/ticket.rb Normal file → Executable file
View File

@@ -2,7 +2,7 @@ class Ticket < ApplicationRecord
# Associations
belongs_to :user
belongs_to :ticket_type
has_one :party, through: :ticket_type
has_one :event, through: :ticket_type
# Validations
validates :qr_code, presence: true, uniqueness: true

5
app/models/ticket_type.rb Normal file → Executable file
View File

@@ -1,6 +1,6 @@
class TicketType < ApplicationRecord
# Associations
belongs_to :party
belongs_to :event
has_many :tickets, dependent: :destroy
# Validations
@@ -8,12 +8,13 @@ class TicketType < ApplicationRecord
validates :description, presence: true, length: { minimum: 10, maximum: 500 }
validates :price_cents, presence: true, numericality: { greater_than: 0 }
validates :quantity, presence: true, numericality: { only_integer: true, greater_than: 0 }
validates :party_id, presence: true
validates :sale_start_at, presence: true
validates :sale_end_at, presence: true
validate :sale_end_after_start
validates :requires_id, inclusion: { in: [ true, false ] }
validates :minimum_age, numericality: { only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: 120 }, allow_nil: true
validates :event_id, presence: true
private

2
app/models/user.rb Normal file → Executable file
View File

@@ -20,7 +20,7 @@ class User < ApplicationRecord
:recoverable, :rememberable, :validatable
# Relationships
has_many :parties, dependent: :destroy
has_many :events, dependent: :destroy
has_many :tickets, dependent: :destroy
# Validations