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

Instance Method Details

#build_event_addonsObject

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_registrantsObject

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?
  
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_sObject

Instance Methods



151
152
153
# File 'app/models/concerns/effective_events_event_registration.rb', line 151

def to_s
  'registration'
end

#unavailable_event_productsObject



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_ticketsObject



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