Class: Effective::EventTicket

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

Constant Summary collapse

CATEGORIES =
['Regular', 'Member Only', 'Member or Non-Member']

Instance Method Summary collapse

Instance Method Details

#capacity_available(except: nil) ⇒ Object



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

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



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

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

  capacity_available(except: except)
end

#capacity_taken(except: nil) ⇒ Object



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

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

#member_only?Boolean

Returns:

  • (Boolean)


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

def member_only?
  category == 'Member Only'
end

#member_or_non_member?Boolean

Returns:

  • (Boolean)


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

def member_or_non_member?
  category == 'Member or Non-Member'
end

#purchased_event_registrants_countObject



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

def purchased_event_registrants_count
  purchased_event_registrants.length
end

#questionsObject



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

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

#registered_available_countObject

Registered and available count



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

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



108
109
110
# File 'app/models/effective/event_ticket.rb', line 108

def registered_count
  registered_event_registrants.length
end

#registered_non_waitlisted_countObject

Registered and not waitlisted count



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

def registered_non_waitlisted_count
  registered_event_registrants.non_waitlisted.length
end

#registered_or_selected_event_registrants(except: nil) ⇒ Object



97
98
99
100
101
102
103
# File 'app/models/effective/event_ticket.rb', line 97

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



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

def registered_waitlisted_count
  registered_event_registrants.waitlisted.length
end

#regular?Boolean

Returns:

  • (Boolean)


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

def regular?
  category == 'Regular'
end

#to_sObject



76
77
78
# File 'app/models/effective/event_ticket.rb', line 76

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