effective_events 3.0.7 → 3.0.9

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: 4149a59b13ee1c0cac2f955ce3e1c469948795a426c0cb76909fa85ed2048197
4
- data.tar.gz: 0ddfa45c4c58a77744caf558ed4550cbeba84edea35b7c18781284a82f1420b9
3
+ metadata.gz: 1eb941a4d2f674462d040e0b05bf52347917044b3fd770e97401f7fbde823db5
4
+ data.tar.gz: 6824262cb6e8dca0fcddfb19615da17a2ac15b394d5bfaf74dd466d3c4615b15
5
5
  SHA512:
6
- metadata.gz: cb449fe172242e4f27cf5f85f7fe6cd900ff75926ebbedcbdd427433226b5943cbebbe2d71a6435fcbbb14e13feab124d8f6c1a59e57da599f78b5acd2c2ee67
7
- data.tar.gz: d3dc827cc806aeb1f905136662a79e8506b2677e8d4ca8d992e1c2265aca5c039121a4797de9a826b7a22f2c8d988b0d26b1dc6f5fdeeab4ac006ae7ad63bf33
6
+ metadata.gz: 68af9844bec221bbadb86095975c930cd408108294c4491c38ed9943da0f867ddfa4c60ad62f02a158251647322ff22cc817c6064454bf14c612b3ec84b3274d
7
+ data.tar.gz: 15d8a426770fe83299ffb414ca6a39bf69a50bff002dc04373afad3744e38ebac8c3841e97051b3bf10126b09137b762cc967ac46c5457781fdb635e2d4ffc8b
@@ -31,7 +31,7 @@ module Effective
31
31
  values = {
32
32
  name: resource.title,
33
33
  date: resource.start_at.strftime('%F %H:%M'),
34
- url: effective_events.event_url(resource)
34
+ url: link_to(effective_events.event_url(resource))
35
35
  }
36
36
 
37
37
  { event: values }
@@ -146,7 +146,7 @@ module EffectiveEventsEventRegistration
146
146
  end
147
147
  end
148
148
 
149
- # Validate the same registrant user isn't registered on another registration
149
+ # Validate the same registrant user isn't registered for this ticket on another registration
150
150
  validate(if: -> { current_step == :details }) do
151
151
  present_event_registrants.select { |er| er.user.present? }.each do |er|
152
152
  existing = Effective::EventRegistrant.unarchived.registered.where(event_ticket: er.event_ticket, user: er.user).where.not(id: er)
@@ -158,6 +158,18 @@ module EffectiveEventsEventRegistration
158
158
  end
159
159
  end
160
160
 
161
+ # Validate the same registrant user isn't registered for this event (any ticket) on another registration
162
+ validate(if: -> { current_step == :details && validate_one_ticket_per_event? }) do
163
+ present_event_registrants.select { |er| er.user.present? }.each do |er|
164
+ existing = Effective::EventRegistrant.unarchived.registered.where(event: er.event, user: er.user).where.not(id: er)
165
+
166
+ if existing.present?
167
+ errors.add(:base, "Unable to register #{er.user} for #{er.event}. They've already been registered")
168
+ er.errors.add(:user_id, "Unable to register #{er.user} for #{er.event}. They've already been registered")
169
+ end
170
+ end
171
+ end
172
+
161
173
  # Validate all products are available for registration
162
174
  validate(if: -> { current_step == :addons }) do
163
175
  unavailable_event_products.each do |event_product|
@@ -525,6 +537,13 @@ module EffectiveEventsEventRegistration
525
537
  false
526
538
  end
527
539
 
540
+ # We always validate that the user cannot register for the same event ticket more than once
541
+ # This is an additional validation where they cannot register for the same event more than once
542
+ # Can be overridden in the model if you need event specific validation.
543
+ def validate_one_ticket_per_event?
544
+ EffectiveEvents.validate_one_ticket_per_event?
545
+ end
546
+
528
547
  def wizard_step_title(step)
529
548
  return EffectiveEvents.code_of_conduct_page_title if step == :code_of_conduct
530
549
  default_wizard_step_title(step)
@@ -23,6 +23,9 @@ EffectiveEvents.setup do |config|
23
23
  # Turn on the validation. You must have a company or organization when filling out Ticket Details screen.
24
24
  config.company_or_organization_required = false
25
25
 
26
+ # Prevent users from purchasing more than one ticket for themselves to an event
27
+ config.validate_one_ticket_per_event = false
28
+
26
29
  # Categories
27
30
  config.categories = ['Events']
28
31
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveEvents
2
- VERSION = '3.0.7'.freeze
2
+ VERSION = '3.0.9'.freeze
3
3
  end
@@ -10,7 +10,7 @@ module EffectiveEvents
10
10
  :event_registrations_table_name, :event_products_table_name, :event_addons_table_name, :event_notifications_table_name,
11
11
  :mailer, :parent_mailer, :deliver_method, :mailer_layout, :mailer_sender, :mailer_admin, :mailer_subject,
12
12
  :layout, :per_page, :use_effective_roles, :categories, :events_hint_text,
13
- :organization_enabled, :create_users, :company_or_organization_required,
13
+ :organization_enabled, :create_users, :company_or_organization_required, :validate_one_ticket_per_event,
14
14
  :code_of_conduct_enabled, :code_of_conduct_slug,
15
15
  :event_registration_class_name
16
16
  ]
@@ -51,6 +51,10 @@ module EffectiveEvents
51
51
  page
52
52
  end
53
53
 
54
+ def self.validate_one_ticket_per_event?
55
+ validate_one_ticket_per_event == true
56
+ end
57
+
54
58
  # If we can create delayed payment events at all
55
59
  def self.delayed?
56
60
  !!EffectiveOrders.try(:delayed?)
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.0.7
4
+ version: 3.0.9
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: 2025-10-06 00:00:00.000000000 Z
11
+ date: 2025-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails