effective_events 0.19.1 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/effective_events/base.js +32 -0
  3. data/app/controllers/effective/event_registrants_select2_ajax_controller.rb +61 -0
  4. data/app/controllers/effective/event_registrations_controller.rb +17 -1
  5. data/app/datatables/effective_event_registrants_datatable.rb +11 -11
  6. data/app/datatables/effective_event_registrations_datatable.rb +2 -1
  7. data/app/helpers/effective_events_helper.rb +2 -19
  8. data/app/mailers/effective/events_mailer.rb +1 -1
  9. data/app/models/concerns/effective_events_event_registration.rb +141 -51
  10. data/app/models/effective/event.rb +32 -12
  11. data/app/models/effective/event_notification.rb +1 -1
  12. data/app/models/effective/event_registrant.rb +171 -45
  13. data/app/models/effective/event_ticket.rb +20 -17
  14. data/app/models/effective/event_ticket_selection.rb +28 -0
  15. data/app/views/admin/event_registrants/_form.html.haml +16 -3
  16. data/app/views/admin/event_tickets/_form.html.haml +1 -1
  17. data/app/views/effective/event_registrants/_fields.html.haml +47 -28
  18. data/app/views/effective/event_registrations/_details.html.haml +1 -0
  19. data/app/views/effective/event_registrations/_fields_event_registrants.html.haml +26 -0
  20. data/app/views/effective/event_registrations/_fields_event_ticket_selections.html.haml +85 -0
  21. data/app/views/effective/event_registrations/_form_blank_registrants.html.haml +12 -14
  22. data/app/views/effective/event_registrations/_layout.html.haml +9 -1
  23. data/app/views/effective/event_registrations/billing.html.haml +1 -1
  24. data/app/views/effective/event_registrations/details.html.haml +10 -0
  25. data/app/views/effective/event_registrations/summary.html.haml +2 -2
  26. data/app/views/effective/event_registrations/tickets.html.haml +3 -13
  27. data/app/views/effective/events/show.html.haml +34 -34
  28. data/config/effective_events.rb +11 -4
  29. data/config/routes.rb +5 -0
  30. data/db/migrate/101_create_effective_events.rb +16 -1
  31. data/lib/effective_events/version.rb +1 -1
  32. data/lib/effective_events.rb +6 -4
  33. metadata +8 -7
  34. data/app/views/effective/event_registrants/_fields_member_only.html.haml +0 -10
  35. data/app/views/effective/event_registrants/_fields_member_or_non_member.html.haml +0 -34
  36. data/app/views/effective/event_registrants/_fields_questions.html.haml +0 -8
  37. data/app/views/effective/event_registrants/_fields_regular.html.haml +0 -8
  38. data/app/views/effective/event_registrations/_event_tickets.html.haml +0 -63
@@ -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
- - registrant = fr.object
10
- - ticket = registrant.event_ticket
10
+ - event_registrant = fr.object
11
+ - event_ticket = event_registrant.event_ticket
11
12
 
12
13
  = card do
13
14
  %p
14
- = ticket
15
+ = event_ticket
15
16
  = ' - '
16
- = price_to_currency(registrant.event_ticket_price)
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
- - if ticket.regular?
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= render_wizard_sidebar(resource)
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('Billing Address') do
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 'effective/event_registrations/content', resource: resource
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/event_tickets', resource: resource
4
-
5
- = render 'effective/event_registrations/content', 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
- %p Please select one or more tickets to register for this event:
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
- .row
23
- .col
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
- - if @event.registration_start_at.present?
31
- %li.mb-3
32
- %label Registration Opens
33
- %br
34
- = @event.registration_start_at.strftime("%A, %B %d, %Y · %l:%M%P")
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
- - if @event.early_bird_end_at.present?
37
- %li.mb-3
38
- %label Early Bird Rate Ends
39
- %br
40
- = @event.early_bird_end_at.strftime("%A, %B %d, %Y · %l:%M%P")
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
- - if @event.registration_end_at.present?
43
- %li.mb-3
44
- %label Registration Closes
45
- %br
46
- = @event.registration_end_at.strftime("%A, %B %d, %Y · %l:%M%P")
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
- -# .col-md-auto
49
- -# - if @event.event_tickets.present?
50
- -# %label Tickets
51
- -# %br
52
- -# %ul
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
- - if @event.file.present?
57
- .col-lg-4
58
- = image_tag url_for(@event.file), class: "effective-events-image d-none d-lg-flex align-self-start", alt: @event.title, width: "350", height: "220"
59
-
60
- .py-3
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")
@@ -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
@@ -1,3 +1,3 @@
1
1
  module EffectiveEvents
2
- VERSION = '0.19.1'.freeze
2
+ VERSION = '0.20.0'.freeze
3
3
  end
@@ -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, :event_registrant_required_fields,
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.event_registrant_required_fields
32
- (Array(config[:event_registrant_required_fields]) - [nil, false, '']).map(&:to_sym)
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.19.1
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-14 00:00:00.000000000 Z
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/_event_tickets.html.haml
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,8 +0,0 @@
1
- - if ticket.question1.present?
2
- = f.text_field :response1, label: ticket.question1
3
-
4
- - if ticket.question2.present?
5
- = f.text_field :response2, label: ticket.question2
6
-
7
- - if ticket.question3.present?
8
- = f.text_field :response3, label: ticket.question3
@@ -1,8 +0,0 @@
1
- - # Choose non-member
2
- .row
3
- .col-md= f.text_field :first_name
4
- .col-md= f.text_field :last_name
5
-
6
- .row
7
- .col-md= f.email_field :email
8
- .col-md= f.text_field :company
@@ -1,63 +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
- %table.table.table-sm.table-striped
10
- %thead
11
- %tr
12
- %th Ticket
13
- %th Price
14
-
15
- %tbody
16
- - tickets.each do |ticket|
17
- %tr
18
- %td
19
- = ticket.to_s
20
- - if ticket.capacity.present? && ticket.display_capacity?
21
- %br
22
- %small
23
- #{ticket.capacity_available} remaining
24
- - if ticket.waitlist?
25
- before waitlist
26
-
27
- %td
28
- %ul.list-unstyled.mb-0
29
- - 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
30
- %li
31
- - if ticket.regular_price.present? && ticket.regular_price != 0
32
- %div
33
- %s.mr-2.text-muted
34
- = price_to_currency(ticket.regular_price)
35
-
36
- - if ticket.member_price.present? && ticket.member_price != 0
37
- %div
38
- %s.text-muted
39
- = price_to_currency(ticket.member_price)
40
- .badge.badge-secondary.mr-2 Members
41
-
42
- %div
43
- = price_to_currency(ticket.early_bird_price)
44
- .badge.badge-warning Early Bird
45
-
46
- - else
47
- - if ticket.regular_price.present?
48
- %li
49
- = price_to_currency(ticket.regular_price)
50
-
51
- - if ticket.member_price.present?
52
- %li
53
- = price_to_currency(ticket.member_price)
54
- .badge.badge-secondary Members
55
-
56
- - if waitlist
57
- %p If the ticket capacity has been reached you will be added to the waitlist.
58
-
59
- - unless current_user.try(:is?, :member)
60
- - if all_member_only_tickets
61
- .alert.alert-info.mb-4 You must be a member to purchase tickets.
62
- - elsif any_member_only_tickets
63
- .alert.alert-info.mb-4 You must be a member to purchase some of these tickets.