effective_events 3.0.8 → 3.1.0
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 +4 -4
- data/app/datatables/admin/effective_event_tickets_datatable.rb +4 -0
- data/app/models/concerns/effective_events_event_registration.rb +20 -1
- data/app/models/effective/event_registrant.rb +6 -1
- data/app/models/effective/event_ticket.rb +16 -0
- data/app/views/admin/event_tickets/_form.html.haml +5 -0
- data/app/views/effective/event_registrants/_fields.html.haml +3 -3
- data/config/effective_events.rb +3 -0
- data/db/migrate/101_create_effective_events.rb +4 -0
- data/lib/effective_events/version.rb +1 -1
- data/lib/effective_events.rb +5 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e37bb52cbe39fa76dbb40c45b4364abbab706a4a872125e11de75a1432c7b62
|
4
|
+
data.tar.gz: 484e50eafc049ea811ba446638a600ca8d49e17004da1e7a88d4635afe73f30e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84b97ecbbad1998e51a2ccbe93a2d5bd015e9a6dfa9f5e267db7a9f2aaf8a1668aaa1822c4ba6482f8cc539ae76846a4b2a0128e7654d0923040b662bc1590a6
|
7
|
+
data.tar.gz: f8ca6e7b250819032b81a8b8459cf7179e9ff0b8ba782902755fae7d3f1c1a9c247edb0bc12b4ea0f45d883828b8b82bc05cc4fb0160a27271966f1fe179480d
|
@@ -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)
|
@@ -135,11 +135,16 @@ module Effective
|
|
135
135
|
validates :last_name, presence: true, if: -> { registrant_validations_enabled? }
|
136
136
|
validates :email, presence: true, if: -> { registrant_validations_enabled? }
|
137
137
|
|
138
|
-
# User, company and organization
|
138
|
+
# User, company and organization conditionally required
|
139
139
|
validates :user, presence: true, if: -> { registrant_validations_enabled? && EffectiveEvents.create_users }
|
140
140
|
validates :company, presence: true, if: -> { registrant_validations_enabled? && EffectiveEvents.company_or_organization_required }
|
141
141
|
validates :organization, presence: true, if: -> { registrant_validations_enabled? && EffectiveEvents.company_or_organization_required && EffectiveEvents.organization_enabled? }
|
142
142
|
|
143
|
+
# Responses may or may not be required depending on the event ticket
|
144
|
+
validates :response1, presence: true, if: -> { registrant_validations_enabled? && event_ticket&.question1_required? }
|
145
|
+
validates :response2, presence: true, if: -> { registrant_validations_enabled? && event_ticket&.question2_required? }
|
146
|
+
validates :response3, presence: true, if: -> { registrant_validations_enabled? && event_ticket&.question3_required? }
|
147
|
+
|
143
148
|
# Copy any user errors from build_user_and_organization() into the registrant
|
144
149
|
after_validation(if: -> { user && user.new_record? && user.errors.present? }) do
|
145
150
|
errors.add(:first_name, user.errors[:first_name].join(', ')) if user.errors[:first_name].present?
|
@@ -35,6 +35,10 @@ module Effective
|
|
35
35
|
question2 :text
|
36
36
|
question3 :text
|
37
37
|
|
38
|
+
question1_required :boolean
|
39
|
+
question2_required :boolean
|
40
|
+
question3_required :boolean
|
41
|
+
|
38
42
|
# Pricing
|
39
43
|
early_bird_price :integer
|
40
44
|
|
@@ -164,5 +168,17 @@ module Effective
|
|
164
168
|
category == 'Members'
|
165
169
|
end
|
166
170
|
|
171
|
+
def question1_required?
|
172
|
+
question1.present? && question1_required
|
173
|
+
end
|
174
|
+
|
175
|
+
def question2_required?
|
176
|
+
question2.present? && question2_required
|
177
|
+
end
|
178
|
+
|
179
|
+
def question3_required?
|
180
|
+
question3.present? && question3_required
|
181
|
+
end
|
182
|
+
|
167
183
|
end
|
168
184
|
end
|
@@ -49,7 +49,12 @@
|
|
49
49
|
%small.text-muted Please add up to 3 questions to ask during registration. Each ticket will have their own unique answers. Leave a question blank to skip.
|
50
50
|
|
51
51
|
= f.text_field :question1, label: 'Question 1'
|
52
|
+
= f.check_box :question1_required, label: 'Question 1 Required'
|
53
|
+
|
52
54
|
= f.text_field :question2, label: 'Question 2'
|
55
|
+
= f.check_box :question2_required, label: 'Question 2 Required'
|
56
|
+
|
53
57
|
= f.text_field :question3, label: 'Question 3'
|
58
|
+
= f.check_box :question3_required, label: 'Question 3 Required'
|
54
59
|
|
55
60
|
= effective_submit(f)
|
@@ -41,11 +41,11 @@
|
|
41
41
|
|
42
42
|
- if event_ticket.present?
|
43
43
|
- if event_ticket.question1.present?
|
44
|
-
= f.text_field :response1, label: event_ticket.question1
|
44
|
+
= f.text_field :response1, label: event_ticket.question1, required: event_ticket.question1_required?
|
45
45
|
|
46
46
|
- if event_ticket.question2.present?
|
47
|
-
= f.text_field :response2, label: event_ticket.question2
|
47
|
+
= f.text_field :response2, label: event_ticket.question2, required: event_ticket.question2_required?
|
48
48
|
|
49
49
|
- if event_ticket.question3.present?
|
50
|
-
= f.text_field :response3, label: event_ticket.question3
|
50
|
+
= f.text_field :response3, label: event_ticket.question3, required: event_ticket.question3_required?
|
51
51
|
|
data/config/effective_events.rb
CHANGED
@@ -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
|
|
@@ -58,6 +58,10 @@ class CreateEffectiveEvents < ActiveRecord::Migration[6.0]
|
|
58
58
|
t.text :question2
|
59
59
|
t.text :question3
|
60
60
|
|
61
|
+
t.boolean :question1_required, default: false
|
62
|
+
t.boolean :question2_required, default: false
|
63
|
+
t.boolean :question3_required, default: false
|
64
|
+
|
61
65
|
t.string :qb_item_name
|
62
66
|
t.boolean :tax_exempt, default: false
|
63
67
|
|
data/lib/effective_events.rb
CHANGED
@@ -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
|
4
|
+
version: 3.1.0
|
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-
|
11
|
+
date: 2025-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|