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
189 190 191 192 193 194 195 196 197 198 199 200 201 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 189 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
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 172 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
155 156 157 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 155 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.
166 167 168 169 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 166 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
160 161 162 163 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 160 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
151 152 153 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 151 def in_progress? draft? end |
#to_s ⇒ Object
Instance Methods
147 148 149 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 147 def to_s 'registration' end |
#unavailable_event_products ⇒ Object
213 214 215 216 217 218 219 220 221 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 213 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
203 204 205 206 207 208 209 210 211 |
# File 'app/models/concerns/effective_events_event_registration.rb', line 203 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 |