refactor: prepare for free ticket
This commit is contained in:
@@ -116,6 +116,11 @@ class Order < ApplicationRecord
|
||||
promoter_payout_cents / 100.0
|
||||
end
|
||||
|
||||
# Check if order contains only free tickets
|
||||
def free?
|
||||
total_amount_cents == 0
|
||||
end
|
||||
|
||||
# Create Stripe invoice for accounting records
|
||||
#
|
||||
# This method creates a post-payment invoice in Stripe for accounting purposes
|
||||
|
||||
@@ -9,7 +9,7 @@ class Ticket < ApplicationRecord
|
||||
validates :qr_code, presence: true, uniqueness: true
|
||||
validates :order_id, presence: true
|
||||
validates :ticket_type_id, presence: true
|
||||
validates :price_cents, presence: true, numericality: { greater_than: 0 }
|
||||
validates :price_cents, presence: true, numericality: { greater_than_or_equal_to: 0 }
|
||||
validates :status, presence: true, inclusion: { in: %w[draft active used expired refunded] }
|
||||
validates :first_name, presence: true
|
||||
validates :last_name, presence: true
|
||||
|
||||
@@ -6,7 +6,7 @@ class TicketType < ApplicationRecord
|
||||
# Validations
|
||||
validates :name, presence: true, length: { minimum: 3, maximum: 50 }
|
||||
validates :description, presence: true, length: { minimum: 10, maximum: 500 }
|
||||
validates :price_cents, presence: true, numericality: { greater_than: 0 }
|
||||
validates :price_cents, presence: true, numericality: { greater_than_or_equal_to: 0 }
|
||||
validates :quantity, presence: true, numericality: { only_integer: true, greater_than: 0 }
|
||||
validates :sale_start_at, presence: true
|
||||
validates :sale_end_at, presence: true
|
||||
@@ -48,6 +48,10 @@ class TicketType < ApplicationRecord
|
||||
[ quantity - tickets.count, 0 ].max
|
||||
end
|
||||
|
||||
def free?
|
||||
price_cents == 0
|
||||
end
|
||||
|
||||
def sales_status
|
||||
return :draft if sale_start_at.nil? || sale_end_at.nil?
|
||||
return :expired if sale_end_at < Time.current
|
||||
|
||||
Reference in New Issue
Block a user