effective_events 0.19.2 → 0.20.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/assets/javascripts/effective_events/base.js +32 -0
- data/app/controllers/effective/event_registrants_select2_ajax_controller.rb +61 -0
- data/app/controllers/effective/event_registrations_controller.rb +17 -1
- data/app/datatables/effective_event_registrants_datatable.rb +11 -11
- data/app/datatables/effective_event_registrations_datatable.rb +2 -1
- data/app/helpers/effective_events_helper.rb +2 -19
- data/app/mailers/effective/events_mailer.rb +1 -1
- data/app/models/concerns/effective_events_event_registration.rb +141 -51
- data/app/models/effective/event.rb +32 -12
- data/app/models/effective/event_notification.rb +1 -1
- data/app/models/effective/event_registrant.rb +171 -45
- data/app/models/effective/event_ticket.rb +20 -17
- data/app/models/effective/event_ticket_selection.rb +28 -0
- data/app/views/admin/event_registrants/_form.html.haml +16 -3
- data/app/views/admin/event_tickets/_form.html.haml +1 -1
- data/app/views/effective/event_registrants/_fields.html.haml +47 -28
- data/app/views/effective/event_registrations/_details.html.haml +1 -0
- data/app/views/effective/event_registrations/_fields_event_registrants.html.haml +26 -0
- data/app/views/effective/event_registrations/_fields_event_ticket_selections.html.haml +85 -0
- data/app/views/effective/event_registrations/_form_blank_registrants.html.haml +12 -14
- data/app/views/effective/event_registrations/_layout.html.haml +9 -1
- data/app/views/effective/event_registrations/billing.html.haml +1 -1
- data/app/views/effective/event_registrations/details.html.haml +10 -0
- data/app/views/effective/event_registrations/summary.html.haml +2 -2
- data/app/views/effective/event_registrations/tickets.html.haml +3 -13
- data/app/views/effective/events/show.html.haml +34 -34
- data/config/effective_events.rb +11 -4
- data/config/routes.rb +5 -0
- data/db/migrate/101_create_effective_events.rb +16 -1
- data/lib/effective_events/version.rb +1 -1
- data/lib/effective_events.rb +6 -4
- metadata +8 -7
- data/app/views/effective/event_registrants/_fields_member_only.html.haml +0 -10
- data/app/views/effective/event_registrants/_fields_member_or_non_member.html.haml +0 -34
- data/app/views/effective/event_registrants/_fields_questions.html.haml +0 -8
- data/app/views/effective/event_registrants/_fields_regular.html.haml +0 -8
- data/app/views/effective/event_registrations/_event_tickets.html.haml +0 -68
@@ -1,32 +1,30 @@
|
|
1
1
|
= effective_form_with(model: resource, url: effective_events.update_blank_registrants_event_event_registration_path(event_registration.event, event_registration), method: :put) do |f|
|
2
2
|
= f.hidden_field :id
|
3
3
|
|
4
|
+
- event = f.object.event
|
4
5
|
- event_registrants = f.object.event_registrants.select(&:blank_registrant?)
|
5
6
|
|
6
7
|
%p Please update the information for the following #{pluralize(event_registrants.count, 'incomplete ticket')}:
|
7
8
|
|
8
9
|
= f.fields_for :event_registrants, event_registrants do |fr|
|
9
|
-
-
|
10
|
-
-
|
10
|
+
- event_registrant = fr.object
|
11
|
+
- event_ticket = event_registrant.event_ticket
|
11
12
|
|
12
13
|
= card do
|
13
14
|
%p
|
14
|
-
=
|
15
|
+
= event_ticket
|
15
16
|
= ' - '
|
16
|
-
|
17
|
+
|
18
|
+
- if event_ticket.member_or_non_member? && event_registrant.first_name.blank? && !event.early_bird?
|
19
|
+
= effective_events_ticket_price(event, event_ticket)
|
20
|
+
- else
|
21
|
+
= price_to_currency(event_registrant.price)
|
22
|
+
|
23
|
+
= event_registrant.details
|
17
24
|
|
18
25
|
= fr.check_box :blank_registrant, label: "I will return and add this ticket's information later"
|
19
26
|
|
20
27
|
= fr.show_if(:blank_registrant, false) do
|
21
|
-
|
22
|
-
= render('effective/event_registrants/fields_regular', f: fr)
|
23
|
-
- elsif ticket.member_only?
|
24
|
-
= render('effective/event_registrants/fields_member_only', f: fr)
|
25
|
-
- elsif ticket.member_or_non_member?
|
26
|
-
= render('effective/event_registrants/fields_member_or_non_member', f: fr)
|
27
|
-
- else
|
28
|
-
- raise("Unexpected ticket category: #{ticket.category || 'nil'}")
|
29
|
-
|
30
|
-
= render('effective/event_registrants/fields_questions', f: fr, ticket: ticket)
|
28
|
+
= render('effective/event_registrants/fields', f: fr)
|
31
29
|
|
32
30
|
= f.submit 'Save Ticket Information', center: true
|
@@ -1,3 +1,11 @@
|
|
1
1
|
.row
|
2
|
-
.col-lg-3.mb-3
|
2
|
+
.col-lg-3.mb-3
|
3
|
+
= render_wizard_sidebar(resource)
|
4
|
+
|
5
|
+
- if resource.display_countdown?
|
6
|
+
.mt-4
|
7
|
+
|
8
|
+
= card do
|
9
|
+
%p Your tickets are reserved until #{resource.selected_expires_at.strftime("%I:%M%P %Z")}
|
10
|
+
|
3
11
|
.col-lg-9.mb-3= yield
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
- raise('expected owner to respond to billing_address') unless resource.owner.respond_to?(:billing_address)
|
5
5
|
|
6
|
-
= card
|
6
|
+
= card do
|
7
7
|
%p Please enter your billing address
|
8
8
|
|
9
9
|
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
@@ -0,0 +1,10 @@
|
|
1
|
+
= render 'layout' do
|
2
|
+
= render('effective/event_registrations/content', resource: resource)
|
3
|
+
|
4
|
+
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
5
|
+
= f.hidden_field :id
|
6
|
+
|
7
|
+
= render('effective/event_registrations/fields_event_registrants', form: f)
|
8
|
+
|
9
|
+
%hr
|
10
|
+
= f.save 'Save and Continue'
|
@@ -1,8 +1,8 @@
|
|
1
1
|
= render 'layout' do
|
2
|
-
= render
|
3
|
-
|
2
|
+
= render('effective/event_registrations/content', resource: resource)
|
4
3
|
= render('effective/event_registrations/event_registration', event_registration: resource)
|
5
4
|
|
6
5
|
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
7
6
|
= f.hidden_field :id
|
7
|
+
|
8
8
|
= f.save 'Save and Continue'
|
@@ -1,20 +1,10 @@
|
|
1
1
|
= render 'layout' do
|
2
|
-
|
3
|
-
= render 'effective/event_registrations/content', resource: resource
|
4
|
-
|
5
|
-
= render 'effective/event_registrations/event_tickets', resource: resource
|
2
|
+
= render('effective/event_registrations/content', resource: resource)
|
6
3
|
|
7
4
|
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
8
5
|
= f.hidden_field :id
|
9
6
|
|
10
|
-
|
11
|
-
|
12
|
-
= f.has_many :event_registrants, f.object.build_event_registrants, reorder: false do |fr|
|
13
|
-
= render('effective/event_registrants/fields', f: fr, event: f.object.event, namespace: :events)
|
14
|
-
|
15
|
-
- if resource.delayed_payment_date_upcoming? && resource.submit_order&.delayed? && resource.submit_order&.deferred?
|
16
|
-
.alert.alert-info If the price of your registration changes, your order will be automatically updated.
|
7
|
+
= card do
|
8
|
+
= render('effective/event_registrations/fields_event_ticket_selections', form: f)
|
17
9
|
|
18
|
-
%hr
|
19
|
-
.mb-4
|
20
10
|
= f.save 'Save and Continue'
|
@@ -19,48 +19,48 @@
|
|
19
19
|
- url = @event.external_registration_url.presence || effective_events.new_event_event_registration_path(@event)
|
20
20
|
= link_to 'Register', url, class: 'btn btn-lg btn-primary'
|
21
21
|
|
22
|
-
.
|
23
|
-
.
|
24
|
-
%ul.list-unstyled
|
25
|
-
%li.mb-3
|
26
|
-
%label Date and Time
|
27
|
-
%br
|
28
|
-
= effective_events_event_schedule(@event)
|
22
|
+
- if @event.file.attached?
|
23
|
+
= image_tag url_for(@event.file), class: "effective-events-image d-none d-lg-block float-right", alt: @event.title, width: "350", height: "220"
|
29
24
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
25
|
+
%ul.list-unstyled.mb-0
|
26
|
+
%li.mb-3
|
27
|
+
%label Date and Time
|
28
|
+
%br
|
29
|
+
= effective_events_event_schedule(@event)
|
35
30
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
31
|
+
- if @event.registration_start_at.present? && @event.registration_start_at > Time.zone.now
|
32
|
+
%li.mb-3
|
33
|
+
%label Registration Opens
|
34
|
+
%br
|
35
|
+
= @event.registration_start_at.strftime("%A, %B %d, %Y · %l:%M%P")
|
41
36
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
37
|
+
- if @event.early_bird_end_at.present?
|
38
|
+
%li.mb-3
|
39
|
+
%label Early Bird Rate Ends
|
40
|
+
%br
|
41
|
+
= @event.early_bird_end_at.strftime("%A, %B %d, %Y · %l:%M%P")
|
47
42
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
-# - @event.event_tickets.each do |ticket|
|
54
|
-
-# %li= "#{ticket} (#{effective_events_ticket_price(@event, ticket)})"
|
43
|
+
- if @event.registration_end_at.present?
|
44
|
+
%li.mb-3
|
45
|
+
%label Registration Closes
|
46
|
+
%br
|
47
|
+
= @event.registration_end_at.strftime("%A, %B %d, %Y · %l:%M%P")
|
55
48
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
49
|
+
-# .col-md-auto
|
50
|
+
-# - if @event.event_tickets.present?
|
51
|
+
-# %label Tickets
|
52
|
+
-# %br
|
53
|
+
-# %ul
|
54
|
+
-# - @event.event_tickets.each do |ticket|
|
55
|
+
-# %li= "#{ticket} (#{effective_events_ticket_price(@event, ticket)})"
|
61
56
|
|
62
57
|
- if @event.body.present?
|
63
58
|
.effective-event-body.mb-5
|
64
59
|
= @event.body.to_s
|
65
60
|
|
61
|
+
- if @event.registerable?
|
62
|
+
.register.mb-4
|
63
|
+
- url = @event.external_registration_url.presence || effective_events.new_event_event_registration_path(@event)
|
64
|
+
= link_to 'Register', url, class: 'btn btn-lg btn-primary'
|
65
|
+
|
66
66
|
= link_to("← #{events_name_label}".html_safe, effective_events.events_path, class: "btn btn-secondary my-4")
|
data/config/effective_events.rb
CHANGED
@@ -12,16 +12,23 @@ EffectiveEvents.setup do |config|
|
|
12
12
|
# Events can be restricted by role
|
13
13
|
config.use_effective_roles = true
|
14
14
|
|
15
|
+
# Display effective_memberships organizations on the Ticket Details screen instead of a company field
|
16
|
+
# Create representatives when there is a user and an organization
|
17
|
+
config.organization_enabled = false
|
18
|
+
|
19
|
+
# Create users when you fill out new user information from the Ticket Details screen.
|
20
|
+
# Otherwise no users will be created. If true a User will be required for all event_registrants.
|
21
|
+
config.create_users = false
|
22
|
+
|
23
|
+
# Turn on the validation. You must have a company or organization when filling out Ticket Details screen.
|
24
|
+
config.company_or_organization_required = false
|
25
|
+
|
15
26
|
# Categories
|
16
27
|
config.categories = ['Events']
|
17
28
|
|
18
29
|
# Hint text for event images attachments
|
19
30
|
config.events_hint_text = 'Optional. Shown on the events index and event pages. Dimensions are 220px tall and 350px wide.'
|
20
31
|
|
21
|
-
# Validations for Event Registrants
|
22
|
-
# config.event_registrant_required_fields = [:first_name, :last_name, :email, :company]
|
23
|
-
config.event_registrant_required_fields = [:first_name, :last_name, :email]
|
24
|
-
|
25
32
|
# Mailer Settings
|
26
33
|
# Please see config/initializers/effective_resources.rb for default effective_* gem mailer settings
|
27
34
|
#
|
data/config/routes.rb
CHANGED
@@ -24,6 +24,11 @@ EffectiveEvents::Engine.routes.draw do
|
|
24
24
|
put :update_blank_registrants, on: :member
|
25
25
|
end
|
26
26
|
end
|
27
|
+
|
28
|
+
resources :event_registrants_select2_ajax, only: [] do
|
29
|
+
get :users, on: :collection
|
30
|
+
get :organizations, on: :collection
|
31
|
+
end
|
27
32
|
end
|
28
33
|
|
29
34
|
namespace :admin do
|
@@ -77,11 +77,14 @@ class CreateEffectiveEvents < ActiveRecord::Migration[6.0]
|
|
77
77
|
t.integer :user_id
|
78
78
|
t.string :user_type
|
79
79
|
|
80
|
+
t.integer :organization_id
|
81
|
+
t.string :organization_type
|
82
|
+
|
80
83
|
t.string :first_name
|
81
84
|
t.string :last_name
|
82
85
|
t.string :email
|
83
|
-
|
84
86
|
t.string :company
|
87
|
+
|
85
88
|
t.string :number
|
86
89
|
t.text :notes
|
87
90
|
|
@@ -91,6 +94,7 @@ class CreateEffectiveEvents < ActiveRecord::Migration[6.0]
|
|
91
94
|
t.boolean :waitlisted, default: false
|
92
95
|
t.boolean :promoted, default: false
|
93
96
|
|
97
|
+
t.datetime :selected_at
|
94
98
|
t.datetime :registered_at
|
95
99
|
|
96
100
|
t.text :response1
|
@@ -172,6 +176,17 @@ class CreateEffectiveEvents < ActiveRecord::Migration[6.0]
|
|
172
176
|
t.datetime :created_at
|
173
177
|
end
|
174
178
|
|
179
|
+
create_table :event_ticket_selections do |t|
|
180
|
+
t.integer :event_registration_id
|
181
|
+
t.string :event_registration_type
|
182
|
+
|
183
|
+
t.string :event_ticket_id
|
184
|
+
t.integer :quantity
|
185
|
+
|
186
|
+
t.datetime :updated_at
|
187
|
+
t.datetime :created_at
|
188
|
+
end
|
189
|
+
|
175
190
|
add_index :event_registrations, [:owner_id, :owner_type]
|
176
191
|
add_index :event_registrations, :status
|
177
192
|
add_index :event_registrations, :token
|
data/lib/effective_events.rb
CHANGED
@@ -6,10 +6,11 @@ module EffectiveEvents
|
|
6
6
|
|
7
7
|
def self.config_keys
|
8
8
|
[
|
9
|
-
:events_table_name, :event_registrants_table_name, :event_tickets_table_name,
|
9
|
+
:events_table_name, :event_registrants_table_name, :event_tickets_table_name, :event_ticket_selections_table_name,
|
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
|
-
:layout, :per_page, :use_effective_roles, :categories, :events_hint_text,
|
12
|
+
:layout, :per_page, :use_effective_roles, :categories, :events_hint_text,
|
13
|
+
:organization_enabled, :create_users, :company_or_organization_required,
|
13
14
|
:event_registration_class_name
|
14
15
|
]
|
15
16
|
end
|
@@ -28,8 +29,9 @@ module EffectiveEvents
|
|
28
29
|
Array(config[:categories]) - [nil, false, '']
|
29
30
|
end
|
30
31
|
|
31
|
-
def self.
|
32
|
-
(
|
32
|
+
def self.organization_enabled?
|
33
|
+
raise('missing the effective_memberships gem') if organization_enabled && !defined?(EffectiveMemberships)
|
34
|
+
organization_enabled == true
|
33
35
|
end
|
34
36
|
|
35
37
|
# If we can create delayed payment events at all
|
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: 0.
|
4
|
+
version: 0.20.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: 2024-08-
|
11
|
+
date: 2024-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -229,6 +229,7 @@ files:
|
|
229
229
|
- app/controllers/admin/event_registrations_controller.rb
|
230
230
|
- app/controllers/admin/event_tickets_controller.rb
|
231
231
|
- app/controllers/admin/events_controller.rb
|
232
|
+
- app/controllers/effective/event_registrants_select2_ajax_controller.rb
|
232
233
|
- app/controllers/effective/event_registrations_controller.rb
|
233
234
|
- app/controllers/effective/events_controller.rb
|
234
235
|
- app/datatables/admin/effective_event_addons_datatable.rb
|
@@ -253,6 +254,7 @@ files:
|
|
253
254
|
- app/models/effective/event_registration.rb
|
254
255
|
- app/models/effective/event_search.rb
|
255
256
|
- app/models/effective/event_ticket.rb
|
257
|
+
- app/models/effective/event_ticket_selection.rb
|
256
258
|
- app/views/admin/event_addons/_fields.html.haml
|
257
259
|
- app/views/admin/event_addons/_form.html.haml
|
258
260
|
- app/views/admin/event_notifications/_form.html.haml
|
@@ -267,15 +269,13 @@ files:
|
|
267
269
|
- app/views/admin/events/_form_event_registration_content.html.haml
|
268
270
|
- app/views/effective/event_addons/_fields.html.haml
|
269
271
|
- app/views/effective/event_registrants/_fields.html.haml
|
270
|
-
- app/views/effective/event_registrants/_fields_member_only.html.haml
|
271
|
-
- app/views/effective/event_registrants/_fields_member_or_non_member.html.haml
|
272
|
-
- app/views/effective/event_registrants/_fields_questions.html.haml
|
273
|
-
- app/views/effective/event_registrants/_fields_regular.html.haml
|
274
272
|
- app/views/effective/event_registrations/_addons.html.haml
|
275
273
|
- app/views/effective/event_registrations/_content.html.haml
|
276
274
|
- app/views/effective/event_registrations/_dashboard.html.haml
|
275
|
+
- app/views/effective/event_registrations/_details.html.haml
|
277
276
|
- app/views/effective/event_registrations/_event_registration.html.haml
|
278
|
-
- app/views/effective/event_registrations/
|
277
|
+
- app/views/effective/event_registrations/_fields_event_registrants.html.haml
|
278
|
+
- app/views/effective/event_registrations/_fields_event_ticket_selections.html.haml
|
279
279
|
- app/views/effective/event_registrations/_form_blank_registrants.html.haml
|
280
280
|
- app/views/effective/event_registrations/_layout.html.haml
|
281
281
|
- app/views/effective/event_registrations/_orders.html.haml
|
@@ -285,6 +285,7 @@ files:
|
|
285
285
|
- app/views/effective/event_registrations/billing.html.haml
|
286
286
|
- app/views/effective/event_registrations/checkout.html.haml
|
287
287
|
- app/views/effective/event_registrations/complete.html.haml
|
288
|
+
- app/views/effective/event_registrations/details.html.haml
|
288
289
|
- app/views/effective/event_registrations/start.html.haml
|
289
290
|
- app/views/effective/event_registrations/submitted.html.haml
|
290
291
|
- app/views/effective/event_registrations/summary.html.haml
|
@@ -1,10 +0,0 @@
|
|
1
|
-
- # Choose ANY member
|
2
|
-
- klass = (f.object.user || current_user).class
|
3
|
-
- ajax_url = (@select2_users_ajax_path || effective_memberships.member_users_membership_select2_ajax_index_path) unless Rails.env.test?
|
4
|
-
|
5
|
-
= f.hidden_field :user_type, value: klass.name
|
6
|
-
= f.select :user_id, klass.all, ajax_url: ajax_url, label: 'Member', required: true, hint: effective_events_event_registrant_user_hint()
|
7
|
-
|
8
|
-
- # Choose RELATED ORGANIZATION member
|
9
|
-
-# = f.hidden_field :user_type, value: current_user.class.name
|
10
|
-
-# = f.select :user_id, effective_events_event_registrant_user_collection(f.object), required: true, hint: effective_events_event_registrant_user_hint()
|
@@ -1,34 +0,0 @@
|
|
1
|
-
- if current_user.try(:is_any?, :member, :admin)
|
2
|
-
= f.radios :member_or_non_member_choice, Effective::EventRegistrant::MEMBER_OR_NON_MEMBER_CHOICES, label: false, inline: true
|
3
|
-
- else
|
4
|
-
= f.hidden_field :member_or_non_member_choice, value: 'Add a regular registration'
|
5
|
-
|
6
|
-
= f.show_if(:member_or_non_member_choice, 'Add a member registration', nested: true) do
|
7
|
-
= f.hidden_field :first_name, value: nil
|
8
|
-
= f.hidden_field :last_name, value: nil
|
9
|
-
= f.hidden_field :email, value: nil
|
10
|
-
= f.hidden_field :company, value: nil
|
11
|
-
|
12
|
-
- # Choose ANY member
|
13
|
-
- klass = (f.object.user || current_user).class
|
14
|
-
- ajax_url = (@select2_users_ajax_path || effective_memberships.member_users_membership_select2_ajax_index_path) unless Rails.env.test?
|
15
|
-
|
16
|
-
= f.hidden_field :user_type, value: klass.name
|
17
|
-
= f.select :user_id, klass.all, ajax_url: ajax_url, label: 'Member', hint: effective_events_event_registrant_user_hint()
|
18
|
-
|
19
|
-
- # Choose RELATED ORGANIZATION member
|
20
|
-
-# = f.hidden_field :user_type, value: current_user.class.name
|
21
|
-
-# = f.select :user_id, effective_events_event_registrant_user_collection(f.object), hint: effective_events_event_registrant_user_hint()
|
22
|
-
|
23
|
-
= f.show_if(:member_or_non_member_choice, 'Add a regular registration', nested: true) do
|
24
|
-
= f.hidden_field :user_type, value: nil
|
25
|
-
= f.hidden_field :user_id, value: nil
|
26
|
-
|
27
|
-
- # Choose non-member
|
28
|
-
.row
|
29
|
-
.col-md= f.text_field :first_name
|
30
|
-
.col-md= f.text_field :last_name
|
31
|
-
|
32
|
-
.row
|
33
|
-
.col-md= f.email_field :email
|
34
|
-
.col-md= f.text_field :company
|
@@ -1,68 +0,0 @@
|
|
1
|
-
- tickets = resource.event.event_tickets.reject(&:archived?)
|
2
|
-
- member_column = tickets.any? { |ticket| ticket.member_only? || ticket.member_or_non_member? }
|
3
|
-
- waitlist = tickets.any? { |ticket| ticket.waitlist? }
|
4
|
-
|
5
|
-
- all_member_only_tickets = tickets.all? { |ticket| ticket.member_only? }
|
6
|
-
- any_member_only_tickets = tickets.any? { |ticket| ticket.member_only? }
|
7
|
-
|
8
|
-
= card do
|
9
|
-
- if resource.event.early_bird?
|
10
|
-
.alert.alert-warning.mb-3
|
11
|
-
Early Bird rates end on
|
12
|
-
= resource.event.early_bird_end_at.strftime("%A, %B %d, %Y at %l:%M%P.")
|
13
|
-
|
14
|
-
%table.table.table-sm.table-striped
|
15
|
-
%thead
|
16
|
-
%tr
|
17
|
-
%th Ticket
|
18
|
-
%th Price
|
19
|
-
|
20
|
-
%tbody
|
21
|
-
- tickets.each do |ticket|
|
22
|
-
%tr
|
23
|
-
%td
|
24
|
-
= ticket.to_s
|
25
|
-
- if ticket.capacity.present? && ticket.display_capacity?
|
26
|
-
%br
|
27
|
-
%small
|
28
|
-
#{ticket.capacity_available} remaining
|
29
|
-
- if ticket.waitlist?
|
30
|
-
before waitlist
|
31
|
-
|
32
|
-
%td
|
33
|
-
%ul.list-unstyled.mb-0
|
34
|
-
- if resource.event.early_bird? && ticket.early_bird_price.present? && ticket.early_bird_price != 0 && ticket.early_bird_price != ticket.member_price && ticket.early_bird_price != ticket.regular_price
|
35
|
-
%li
|
36
|
-
- if ticket.regular_price.present? && ticket.regular_price != 0
|
37
|
-
%div
|
38
|
-
%s.text-muted
|
39
|
-
= price_to_currency(ticket.regular_price)
|
40
|
-
|
41
|
-
- if ticket.member_price.present? && ticket.member_price != 0
|
42
|
-
%div
|
43
|
-
%s.text-muted
|
44
|
-
= price_to_currency(ticket.member_price)
|
45
|
-
.badge.badge-secondary.mr-2 Members
|
46
|
-
|
47
|
-
%div
|
48
|
-
= price_to_currency(ticket.early_bird_price)
|
49
|
-
.badge.badge-warning Early Bird
|
50
|
-
|
51
|
-
- else
|
52
|
-
- if ticket.regular_price.present?
|
53
|
-
%li
|
54
|
-
= price_to_currency(ticket.regular_price)
|
55
|
-
|
56
|
-
- if ticket.member_price.present?
|
57
|
-
%li
|
58
|
-
= price_to_currency(ticket.member_price)
|
59
|
-
.badge.badge-secondary Members
|
60
|
-
|
61
|
-
- if waitlist
|
62
|
-
%p If the ticket capacity has been reached you will be added to the waitlist.
|
63
|
-
|
64
|
-
- unless current_user.try(:is?, :member)
|
65
|
-
- if all_member_only_tickets
|
66
|
-
.alert.alert-info.mb-4 You must be a member to purchase tickets.
|
67
|
-
- elsif any_member_only_tickets
|
68
|
-
.alert.alert-info.mb-4 You must be a member to purchase some of these tickets.
|