Class: Effective::EventTicket

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/effective/event_ticket.rb

Constant Summary collapse

CATEGORIES =

Purchasable by

['Anyone', 'Members']

Instance Method Summary collapse

Instance Method Details

#anyone?Boolean

“Anyone” can buy tickets have: Member, Non-member, and Guest of Member pricing. Member and Non-member are always required.

Returns:

  • (Boolean)


150
151
152
# File 'app/models/effective/event_ticket.rb', line 150

def anyone?
  category == 'Anyone'
end

#capacity_available(except: nil) ⇒ Object



93
94
95
96
# File 'app/models/effective/event_ticket.rb', line 93

def capacity_available(except: nil)
  return nil if capacity.blank?
  [(capacity - capacity_taken(except: except)), 0].max
end

#capacity_selectable(except: nil) ⇒ Object

These capacity methods are used by the front end EventRegistrations screens



86
87
88
89
90
91
# File 'app/models/effective/event_ticket.rb', line 86

def capacity_selectable(except: nil)
  return nil if capacity.blank?
  return nil if waitlist?

  capacity_available(except: except)
end

#capacity_taken(except: nil) ⇒ Object



98
99
100
# File 'app/models/effective/event_ticket.rb', line 98

def capacity_taken(except: nil)
  registered_or_selected_event_registrants(except: except).reject { |er| er.waitlisted? && !er.promoted? }.length
end

#early_bird?Boolean

Returns:

  • (Boolean)


141
142
143
# File 'app/models/effective/event_ticket.rb', line 141

def early_bird?
  event&.early_bird_end_at.present?
end

#maximum_priceObject



145
146
147
# File 'app/models/effective/event_ticket.rb', line 145

def maximum_price
  [non_member_price, member_price, (guest_of_member_price if guest_of_member?)].compact.max
end

#members?Boolean

“Members” can buy tickets have: Member and Guest of Member pricing. Member pricing is always required.

Returns:

  • (Boolean)


155
156
157
# File 'app/models/effective/event_ticket.rb', line 155

def members?
  category == 'Members'
end

#purchased_event_registrants_countObject



133
134
135
# File 'app/models/effective/event_ticket.rb', line 133

def purchased_event_registrants_count
  purchased_event_registrants.length
end

#questionsObject



137
138
139
# File 'app/models/effective/event_ticket.rb', line 137

def questions
  [question1.presence, question2.presence, question3.presence].compact
end

#registered_available_countObject

Registered and available count



128
129
130
131
# File 'app/models/effective/event_ticket.rb', line 128

def registered_available_count
  return nil if capacity.blank?
  [capacity - registered_non_waitlisted_count, 0].max
end

#registered_countObject

Total registered count, including waitlisted and non waitlisted



113
114
115
# File 'app/models/effective/event_ticket.rb', line 113

def registered_count
  registered_event_registrants.length
end

#registered_non_waitlisted_countObject

Registered and not waitlisted count



118
119
120
# File 'app/models/effective/event_ticket.rb', line 118

def registered_non_waitlisted_count
  registered_event_registrants.non_waitlisted.length
end

#registered_or_selected_event_registrants(except: nil) ⇒ Object



102
103
104
105
106
107
108
# File 'app/models/effective/event_ticket.rb', line 102

def registered_or_selected_event_registrants(except: nil)
  raise('expected except to be an EventRegistration') if except && !except.class.try(:effective_events_event_registration?)

  event_registrants.select do |er| 
    (er.registered? || er.selected_not_expired?) && (except.blank? || er.event_registration_id != except.id) && !er.archived?
  end
end

#registered_waitlisted_countObject

Registered and waitlisted count



123
124
125
# File 'app/models/effective/event_ticket.rb', line 123

def registered_waitlisted_count
  registered_event_registrants.waitlisted.length
end

#to_sObject



81
82
83
# File 'app/models/effective/event_ticket.rb', line 81

def to_s
  title.presence || 'New Event Ticket'
end