Class: Effective::EventTicket
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Effective::EventTicket
- Defined in:
- app/models/effective/event_ticket.rb
Constant Summary collapse
- CATEGORIES =
Purchasable by
['Anyone', 'Members']
Instance Method Summary collapse
-
#anyone? ⇒ Boolean
“Anyone” can buy tickets have: Member, Non-member, and Guest of Member pricing.
- #blank_registrant_member_price ⇒ Object
- #blank_registrant_non_member_price ⇒ Object
- #capacity_available(except: nil) ⇒ Object
-
#capacity_selectable(except: nil) ⇒ Object
These capacity methods are used by the front end EventRegistrations screens.
- #capacity_taken(except: nil) ⇒ Object
- #early_bird? ⇒ Boolean
- #maximum_price ⇒ Object
-
#members? ⇒ Boolean
“Members” can buy tickets have: Member and Guest of Member pricing.
- #purchased_event_registrants_count ⇒ Object
- #question1_required? ⇒ Boolean
- #question2_required? ⇒ Boolean
- #question3_required? ⇒ Boolean
- #questions ⇒ Object
-
#registered_available_count ⇒ Object
Registered and available count.
-
#registered_count ⇒ Object
Total registered count, including waitlisted and non waitlisted.
-
#registered_non_waitlisted_count ⇒ Object
Registered and not waitlisted count.
- #registered_or_selected_event_registrants(except: nil) ⇒ Object
-
#registered_waitlisted_count ⇒ Object
Registered and waitlisted count.
- #to_s ⇒ Object
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.
162 163 164 |
# File 'app/models/effective/event_ticket.rb', line 162 def anyone? category == 'Anyone' end |
#blank_registrant_member_price ⇒ Object
149 150 151 |
# File 'app/models/effective/event_ticket.rb', line 149 def blank_registrant_member_price [member_price, (guest_of_member? ? guest_of_member_price : non_member_price)].compact.max end |
#blank_registrant_non_member_price ⇒ Object
153 154 155 |
# File 'app/models/effective/event_ticket.rb', line 153 def blank_registrant_non_member_price [member_price, non_member_price].compact.max end |
#capacity_available(except: nil) ⇒ Object
97 98 99 100 |
# File 'app/models/effective/event_ticket.rb', line 97 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
90 91 92 93 94 95 |
# File 'app/models/effective/event_ticket.rb', line 90 def capacity_selectable(except: nil) return nil if capacity.blank? return nil if waitlist? capacity_available(except: except) end |
#capacity_taken(except: nil) ⇒ Object
102 103 104 |
# File 'app/models/effective/event_ticket.rb', line 102 def capacity_taken(except: nil) registered_or_selected_event_registrants(except: except).reject { |er| er.waitlisted? && !er.promoted? }.length end |
#early_bird? ⇒ Boolean
145 146 147 |
# File 'app/models/effective/event_ticket.rb', line 145 def early_bird? event&.early_bird_end_at.present? end |
#maximum_price ⇒ Object
157 158 159 |
# File 'app/models/effective/event_ticket.rb', line 157 def maximum_price [member_price, (guest_of_member_price if guest_of_member?), non_member_price].compact.max end |
#members? ⇒ Boolean
“Members” can buy tickets have: Member and Guest of Member pricing. Member pricing is always required.
167 168 169 |
# File 'app/models/effective/event_ticket.rb', line 167 def members? category == 'Members' end |
#purchased_event_registrants_count ⇒ Object
137 138 139 |
# File 'app/models/effective/event_ticket.rb', line 137 def purchased_event_registrants_count purchased_event_registrants.length end |
#question1_required? ⇒ Boolean
171 172 173 |
# File 'app/models/effective/event_ticket.rb', line 171 def question1_required? question1.present? && question1_required end |
#question2_required? ⇒ Boolean
175 176 177 |
# File 'app/models/effective/event_ticket.rb', line 175 def question2_required? question2.present? && question2_required end |
#question3_required? ⇒ Boolean
179 180 181 |
# File 'app/models/effective/event_ticket.rb', line 179 def question3_required? question3.present? && question3_required end |
#questions ⇒ Object
141 142 143 |
# File 'app/models/effective/event_ticket.rb', line 141 def questions [question1.presence, question2.presence, question3.presence].compact end |
#registered_available_count ⇒ Object
Registered and available count
132 133 134 135 |
# File 'app/models/effective/event_ticket.rb', line 132 def registered_available_count return nil if capacity.blank? [capacity - registered_non_waitlisted_count, 0].max end |
#registered_count ⇒ Object
Total registered count, including waitlisted and non waitlisted
117 118 119 |
# File 'app/models/effective/event_ticket.rb', line 117 def registered_count registered_event_registrants.length end |
#registered_non_waitlisted_count ⇒ Object
Registered and not waitlisted count
122 123 124 |
# File 'app/models/effective/event_ticket.rb', line 122 def registered_non_waitlisted_count registered_event_registrants.non_waitlisted.length end |
#registered_or_selected_event_registrants(except: nil) ⇒ Object
106 107 108 109 110 111 112 |
# File 'app/models/effective/event_ticket.rb', line 106 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_count ⇒ Object
Registered and waitlisted count
127 128 129 |
# File 'app/models/effective/event_ticket.rb', line 127 def registered_waitlisted_count registered_event_registrants.waitlisted.length end |
#to_s ⇒ Object
85 86 87 |
# File 'app/models/effective/event_ticket.rb', line 85 def to_s title.presence || 'New Event Ticket' end |