Module: EffectiveEventsEventRegistration
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/effective_events_event_registration.rb
Overview
EffectiveEventsEventRegistration
Mark your owner model with effective_events_event_registration to get all the includes
Defined Under Namespace
Modules: Base, ClassMethods
Instance Method Summary collapse
-
#build_event_addons ⇒ Object
This builds the default event addons used by the wizard form.
-
#build_event_registrants ⇒ Object
This builds the default event registrants used by the wizard form.
- #done? ⇒ Boolean
-
#event_addon(event_product:, first_name:, last_name:, email:) ⇒ Object
Find or build.
-
#event_registrant(event_ticket:, first_name:, last_name:, email:) ⇒ Object
Find or build.
- #in_progress? ⇒ Boolean
-
#to_s ⇒ Object
Instance Methods.
- #unavailable_event_products ⇒ Object
- #unavailable_event_tickets ⇒ Object
Instance Method Details
#build_event_addons ⇒ Object
This builds the default event addons used by the wizard form
193 194 195 196 197 198 199 200 201 202 203 204 205 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 193 def build_event_addons if event_addons.blank? raise('expected owner and event to be present') unless owner && event event_addons.build( first_name: owner.try(:first_name), last_name: owner.try(:last_name), email: owner.try(:email) ) end event_addons end |
#build_event_registrants ⇒ Object
This builds the default event registrants used by the wizard form
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 176 def build_event_registrants if event_registrants.blank? raise('expected owner and event to be present') unless owner && event event_registrants.build( first_name: owner.try(:first_name), last_name: owner.try(:last_name), email: owner.try(:email), company: owner.try(:company), number: owner.try(:membership).try(:number) || owner.try(:number) ) end event_registrants end |
#done? ⇒ Boolean
159 160 161 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 159 def done? submitted? end |
#event_addon(event_product:, first_name:, last_name:, email:) ⇒ Object
Find or build. But it’s not gonna work with more than 1. This is for testing only really.
170 171 172 173 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 170 def event_addon(event_product:, first_name:, last_name:, email:) addon = event_addons.find { |er| er.event_product == event_product && er.first_name == first_name && er.last_name == last_name && er.email == email } addon || event_addons.build(event: event, event_product: event_product, owner: owner, first_name: first_name, last_name: last_name, email: email) end |
#event_registrant(event_ticket:, first_name:, last_name:, email:) ⇒ Object
Find or build
164 165 166 167 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 164 def event_registrant(event_ticket:, first_name:, last_name:, email:) registrant = event_registrants.find { |er| er.event_ticket == event_ticket && er.first_name == first_name && er.last_name == last_name && er.email == email } registrant || event_registrants.build(event: event, event_ticket: event_ticket, owner: owner, first_name: first_name, last_name: last_name, email: email) end |
#in_progress? ⇒ Boolean
155 156 157 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 155 def in_progress? draft? end |
#to_s ⇒ Object
Instance Methods
151 152 153 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 151 def to_s 'registration' end |
#unavailable_event_products ⇒ Object
217 218 219 220 221 222 223 224 225 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 217 def unavailable_event_products unavailable = [] present_event_addons.map(&:event_product).group_by { |p| p }.each do |event_product, event_products| unavailable << event_product unless event.event_product_available?(event_product, quantity: event_products.length) end unavailable end |
#unavailable_event_tickets ⇒ Object
207 208 209 210 211 212 213 214 215 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 207 def unavailable_event_tickets unavailable = [] present_event_registrants.map(&:event_ticket).group_by { |t| t }.each do |event_ticket, event_tickets| unavailable << event_ticket unless event.event_ticket_available?(event_ticket, quantity: event_tickets.length) end unavailable end |