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)


162
163
164
# File 'app/models/effective/event_ticket.rb', line 162

def anyone?
  category == 'Anyone'
end

#blank_registrant_member_priceObject



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_priceObject



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

Returns:

  • (Boolean)


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

def early_bird?
  event&.early_bird_end_at.present?
end

#maximum_priceObject



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.

Returns:

  • (Boolean)


167
168
169
# File 'app/models/effective/event_ticket.rb', line 167

def members?
  category == 'Members'
end

#purchased_event_registrants_countObject



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

Returns:

  • (Boolean)


171
172
173
# File 'app/models/effective/event_ticket.rb', line 171

def question1_required?
  question1.present? && question1_required
end

#question2_required?Boolean

Returns:

  • (Boolean)


175
176
177
# File 'app/models/effective/event_ticket.rb', line 175

def question2_required?
  question2.present? && question2_required
end

#question3_required?Boolean

Returns:

  • (Boolean)


179
180
181
# File 'app/models/effective/event_ticket.rb', line 179

def question3_required?
  question3.present? && question3_required
end

#questionsObject



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

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

#registered_available_countObject

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_countObject

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_countObject

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_countObject

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_sObject



85
86
87
# File 'app/models/effective/event_ticket.rb', line 85

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