effective_events 3.3.11 → 3.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 70b3a0308b0533ff17758e4931f2291157f72fbc2307559b1dda03ae2fd6fc44
|
|
4
|
+
data.tar.gz: a5ba8b0bac8ccf9ea36199307c77546efbe86a211d302df0b3c52f2b7b2ba1cc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 75d7da4a3fae8a70206f385e81f8b3e34bfbbe053000f10aaa3c966bc8764498575b2bee8c9cafa318fb010cc1fb491b29f71479fde3142adc66ec94608ea994
|
|
7
|
+
data.tar.gz: c672ac5279abd9ff50bd8bde94c3048a7b543e1fc202c528da9d89659fd9f9b37bc1d68ca491f607e913c5586b48dd43a15068651f9898993d84204bc487dc73
|
|
@@ -160,26 +160,14 @@ module EffectiveEventsEventRegistration
|
|
|
160
160
|
end
|
|
161
161
|
|
|
162
162
|
# Validate the same registrant user isn't registered for this ticket on another registration
|
|
163
|
+
# Or for this event (any ticket) on another registration, when one ticket per event is enabled
|
|
164
|
+
# The event registrant adds its own error. We add the base error so it's visible at the top of the form.
|
|
163
165
|
validate(if: -> { current_step == :details }) do
|
|
164
166
|
present_event_registrants.select { |er| er.user.present? }.each do |er|
|
|
165
|
-
|
|
167
|
+
duplicate_of = (validate_one_ticket_per_event? ? { event: er.event } : { event_ticket: er.event_ticket })
|
|
168
|
+
existing = Effective::EventRegistrant.unarchived.registered.where(user: er.user).where(duplicate_of).where.not(id: er)
|
|
166
169
|
|
|
167
|
-
if existing.present?
|
|
168
|
-
errors.add(:base, "Unable to register #{er.user} for #{er.event_ticket}. They've already been registered")
|
|
169
|
-
er.errors.add(:user_id, "Unable to register #{er.user} for #{er.event_ticket}. They've already been registered")
|
|
170
|
-
end
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
# Validate the same registrant user isn't registered for this event (any ticket) on another registration
|
|
175
|
-
validate(if: -> { current_step == :details && validate_one_ticket_per_event? }) do
|
|
176
|
-
present_event_registrants.select { |er| er.user.present? }.each do |er|
|
|
177
|
-
existing = Effective::EventRegistrant.unarchived.registered.where(event: er.event, user: er.user).where.not(id: er)
|
|
178
|
-
|
|
179
|
-
if existing.present?
|
|
180
|
-
errors.add(:base, "Unable to register #{er.user} for #{er.event}. They've already been registered")
|
|
181
|
-
er.errors.add(:user_id, "Unable to register #{er.user} for #{er.event}. They've already been registered")
|
|
182
|
-
end
|
|
170
|
+
errors.add(:base, "Unable to register #{er.user} for #{duplicate_of.values.first}. They've already been registered") if existing.present?
|
|
183
171
|
end
|
|
184
172
|
end
|
|
185
173
|
|
|
@@ -132,6 +132,16 @@ module Effective
|
|
|
132
132
|
errors.add(:user_id, "registrant must be a member") unless event_ticket.guest_of_member? || member?
|
|
133
133
|
end
|
|
134
134
|
|
|
135
|
+
# Validate this user isn't already registered for this event ticket on another registration
|
|
136
|
+
# Or for this event on any ticket, when one ticket per event is enabled
|
|
137
|
+
validate(if: -> { user.present? && event_ticket.present? && registrant_validations_enabled? }, unless: -> { purchased? }) do
|
|
138
|
+
duplicate_of = (validate_one_ticket_per_event? ? { event: event } : { event_ticket: event_ticket })
|
|
139
|
+
|
|
140
|
+
if Effective::EventRegistrant.unarchived.registered.where(user: user).where(duplicate_of).where.not(id: id).present?
|
|
141
|
+
errors.add(:user_id, "Unable to register #{user} for #{duplicate_of.values.first}. They've already been registered")
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
135
145
|
validates :price, numericality: { greater_than_or_equal_to: 0 }
|
|
136
146
|
validates :email, email: true
|
|
137
147
|
|
|
@@ -280,6 +290,12 @@ module Effective
|
|
|
280
290
|
!member? && !guest_of_member?
|
|
281
291
|
end
|
|
282
292
|
|
|
293
|
+
# The event registration can override this to add event specific validation
|
|
294
|
+
def validate_one_ticket_per_event?
|
|
295
|
+
return event_registration.validate_one_ticket_per_event? if event_registration.present?
|
|
296
|
+
EffectiveEvents.validate_one_ticket_per_event?
|
|
297
|
+
end
|
|
298
|
+
|
|
283
299
|
# We create registrants on the tickets step. But don't enforce validations until the details step.
|
|
284
300
|
def registrant_validations_enabled?
|
|
285
301
|
return false if blank_registrant? # They want to come back later
|
|
@@ -372,7 +388,7 @@ module Effective
|
|
|
372
388
|
end
|
|
373
389
|
|
|
374
390
|
def promote_purchased_event_registration!
|
|
375
|
-
# Remove myself from any existing orders.
|
|
391
|
+
# Remove myself from any existing orders.
|
|
376
392
|
# I must be $0 so we don't need to update any prices.
|
|
377
393
|
orders.each do |order|
|
|
378
394
|
order.order_items.find { |oi| oi.purchasable == self }.destroy!
|
|
@@ -411,7 +427,7 @@ module Effective
|
|
|
411
427
|
end
|
|
412
428
|
|
|
413
429
|
def promote_purchased_order!
|
|
414
|
-
# Remove myself from any existing orders.
|
|
430
|
+
# Remove myself from any existing orders.
|
|
415
431
|
# I must be $0 so we don't need to update any prices.
|
|
416
432
|
orders.each do |order|
|
|
417
433
|
order.order_items.find { |oi| oi.purchasable == self }.destroy!
|
|
@@ -421,7 +437,7 @@ module Effective
|
|
|
421
437
|
update!(promoted: true, purchased_order: nil)
|
|
422
438
|
|
|
423
439
|
# Check if the ticket owner has an unpurchased order for the event or create a new one
|
|
424
|
-
order = owner.orders.reject { |order| order.purchased? }.find do |order|
|
|
440
|
+
order = owner.orders.reject { |order| order.purchased? }.find do |order|
|
|
425
441
|
order.purchasables.any? { |purchasable| purchasable.class.name == "Effective::EventRegistrant" && purchasable.try(:event) == event }
|
|
426
442
|
end
|
|
427
443
|
order ||= Effective::Order.new(user: owner)
|
|
@@ -441,7 +457,7 @@ module Effective
|
|
|
441
457
|
def promote_not_purchased!
|
|
442
458
|
update!(promoted: true)
|
|
443
459
|
|
|
444
|
-
orders.reject(&:purchased?).each do |order|
|
|
460
|
+
orders.reject(&:purchased?).each do |order|
|
|
445
461
|
order.update_purchasable_attributes!
|
|
446
462
|
|
|
447
463
|
if order.pending?
|
|
@@ -578,9 +594,9 @@ module Effective
|
|
|
578
594
|
elsif EffectiveEvents.create_users
|
|
579
595
|
# Otherwise create a new user
|
|
580
596
|
new_user = user_klass.create(
|
|
581
|
-
first_name: first_name.strip,
|
|
582
|
-
last_name: last_name.strip,
|
|
583
|
-
email: email.strip.downcase,
|
|
597
|
+
first_name: first_name.strip,
|
|
598
|
+
last_name: last_name.strip,
|
|
599
|
+
email: email.strip.downcase,
|
|
584
600
|
password: SecureRandom.base64(12) + '!@#123abcABC-'
|
|
585
601
|
)
|
|
586
602
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: effective_events
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.3.
|
|
4
|
+
version: 3.3.12
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Code and Effect
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-07-
|
|
11
|
+
date: 2026-07-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|