effective_events 0.13.0 → 0.13.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26de7ee7dbc2f5ec71bac062d12c9dffa48adaa6286f82eee122e3c3f5e13a56
4
- data.tar.gz: 59249f1f8d89f11f4c7c1bbea1f923db8455635167338e0d98a64b33748f6dda
3
+ metadata.gz: 3436a306cb79a123bec79007b2730897d0bb3566dc1c0f2dbd6a31c5eb608a74
4
+ data.tar.gz: 91c60cfc2122eae660a4fc5151f395bf9709bf00c0ccec0f50915e3a2c84f3a9
5
5
  SHA512:
6
- metadata.gz: 6f9141865746360f1831a30429017eaabb44ba31e5ed7c05763c1ced28badcdd3b9c3776a5d7eb7965a641666bec7bffe87ddb590796b013c8ee0143bbfd8bbd
7
- data.tar.gz: 145136b9ac1891673542dc28eadb43498377f03320f261e779e82b0bdbdcc2986c456fcf6f1dccff17dbb434c56e1bee5ab0daeca8abc75e2a98ddf9f2d7850a
6
+ metadata.gz: 972bffdad5a0d13913ec5ab267c82308e1808d5217d0717bd2dba5f823f086974678e32e1c93a9d5ca47165941f006e9877748c2290b681711d5527a9661bbfb
7
+ data.tar.gz: c268aa57f91a45d32af129d493ebf5a3dfe7dc4941e47cfb13d1efcf02353ce8c7d2fbea1ba01c073d9f1365e8284d2c00e03355deb7e1791ca997440447615c
@@ -21,13 +21,9 @@ class EffectiveEventRegistrationsDatatable < Effective::Datatable
21
21
  col :orders, action: :show, visible: false, search: :string
22
22
 
23
23
  actions_col(actions: []) do |er|
24
- if er.draft?
25
- dropdown_link_to('Continue', effective_events.event_event_registration_build_path(er.event, er, er.next_step), 'data-turbolinks' => false)
26
- dropdown_link_to('Delete', effective_events.event_event_registration_path(er.event, er), 'data-confirm': "Really delete #{er}?", 'data-method': :delete)
27
- elsif er.submitted?
24
+ if er.draft? || er.submitted?
28
25
  dropdown_link_to('Continue', effective_events.event_event_registration_build_path(er.event, er, er.next_step), 'data-turbolinks' => false)
29
26
  elsif er.completed?
30
-
31
27
  if EffectiveResources.authorized?(self, :update_blank_registrants, er)
32
28
  dropdown_link_to('Continue', effective_events.event_event_registration_path(er.event, er))
33
29
  else
@@ -40,6 +36,11 @@ class EffectiveEventRegistrationsDatatable < Effective::Datatable
40
36
  dropdown_link_to('Register Again', url)
41
37
  end
42
38
  end
39
+
40
+ if EffectiveResources.authorized?(self, :destroy, er)
41
+ dropdown_link_to('Delete', effective_events.event_event_registration_path(er.event, er), 'data-confirm': "Really delete #{er}?", 'data-method': :delete)
42
+ end
43
+
43
44
  end
44
45
  end
45
46
 
@@ -92,6 +92,9 @@ module EffectiveEventsEventRegistration
92
92
  scope :in_progress, -> { where(status: [:draft, :submitted]) }
93
93
  scope :done, -> { where(status: :completed) }
94
94
 
95
+ scope :delayed, -> { where(event_id: Effective::Event.delayed) }
96
+ scope :not_delayed, -> { where.not(event_id: Effective::Event.delayed) }
97
+
95
98
  scope :for, -> (user) { where(owner: user) }
96
99
 
97
100
  # All Steps validations
@@ -125,19 +128,25 @@ module EffectiveEventsEventRegistration
125
128
  # If we're submitted. Try to move to completed.
126
129
  before_save(if: -> { submitted? }) { try_completed! }
127
130
 
128
- def future_payment_date?
129
- false
131
+ def delayed_payment_date_upcoming?
132
+ event&.delayed_payment_date_upcoming?
130
133
  end
131
134
 
132
135
  def can_visit_step?(step)
133
136
  return false if step == :complete && !completed?
134
137
  return true if step == :complete && completed?
135
138
 
136
- # If they submitted payment with a deferred processor then lock down the steps.
137
- if submitted? && !future_payment_date?
139
+ # If submitted with a cheque/phone deferred (but not delayed) processor then lock down the steps.
140
+ if submitted? && !delayed_payment_date_upcoming?
138
141
  return (step == :submitted)
139
142
  end
140
143
 
144
+ # Add ability to edit registrations up until payment date
145
+ if submitted? && delayed_payment_date_upcoming?
146
+ return can_revisit_completed_steps(step)
147
+ end
148
+
149
+ # Default
141
150
  can_revisit_completed_steps(step)
142
151
  end
143
152
 
@@ -190,6 +199,16 @@ module EffectiveEventsEventRegistration
190
199
  completed?
191
200
  end
192
201
 
202
+ def tickets!
203
+ after_commit { update_submit_fees_and_order! } if submit_order.present?
204
+ save!
205
+ end
206
+
207
+ def addons!
208
+ after_commit { update_submit_fees_and_order! } if submit_order.present?
209
+ save!
210
+ end
211
+
193
212
  def try_completed!
194
213
  return false unless submitted?
195
214
  return false unless submit_order&.purchased?
@@ -225,12 +244,7 @@ module EffectiveEventsEventRegistration
225
244
  if event_registrants.blank?
226
245
  raise('expected owner and event to be present') unless owner && event
227
246
 
228
- event_registrants.build(
229
- first_name: owner.try(:first_name),
230
- last_name: owner.try(:last_name),
231
- email: owner.try(:email),
232
- company: owner.try(:company)
233
- )
247
+ event_registrants.build()
234
248
  end
235
249
 
236
250
  event_registrants
@@ -131,6 +131,10 @@ module Effective
131
131
  scope
132
132
  }
133
133
 
134
+ scope :delayed, -> { where(delayed_payment: true).where.not(delayed_payment_date: nil) }
135
+ scope :delayed_payment_date_past, -> { delayed.where(arel_table[:delayed_payment_date].lteq(Time.zone.today)) }
136
+ scope :delayed_payment_date_upcoming, -> { delayed.where(arel_table[:delayed_payment_date].gt(Time.zone.today)) }
137
+
134
138
  validates :title, presence: true, length: { maximum: 255 }
135
139
  validates :published_at, presence: true, unless: -> { draft? }
136
140
  validates :start_at, presence: true
@@ -283,5 +287,14 @@ module Effective
283
287
  (registered + quantity) <= event_product.capacity
284
288
  end
285
289
 
290
+ def delayed?
291
+ delayed_payment? && delayed_payment_date.present?
292
+ end
293
+
294
+ def delayed_payment_date_upcoming?
295
+ return false unless delayed?
296
+ delayed_payment_date > Time.zone.now.to_date
297
+ end
298
+
286
299
  end
287
300
  end
@@ -22,6 +22,8 @@
22
22
  = f.check_box :member_registrant, label: 'Yes, this ticket will be for a member'
23
23
 
24
24
  = f.show_if(:blank_registrant, false, nested: true) do
25
+ %hr
26
+
25
27
  - if ticket.regular?
26
28
  = render('effective/event_registrants/fields_regular', f: f)
27
29
  - elsif ticket.member_only?
@@ -1,6 +1,6 @@
1
1
  - # Choose member
2
2
  = f.hidden_field :user_type, value: current_user.class.name
3
- = f.select :user_id, effective_events_event_registrant_user_collection(f.object), required: true, hint: effective_events_event_registrant_user_hint()
3
+ = f.select :user_id, effective_events_event_registrant_user_collection(f.object), hint: effective_events_event_registrant_user_hint()
4
4
 
5
5
  = f.show_if(:user_id, '', nested: true) do
6
6
  %p.text-center - or -
@@ -6,17 +6,34 @@
6
6
  - if registration.present?
7
7
  %h2 In Progress Event Registrations
8
8
 
9
- %p
10
- Your registration for
11
- = link_to(registration.event, effective_events.event_path(registration.event))
12
- is incomplete
13
-
14
- %p
15
- Please
16
- = link_to("Continue registration for #{registration.event}", effective_events.event_event_registration_build_path(registration.event, registration, registration.next_step), 'data-turbolinks' => false, class: 'btn btn-primary')
17
- or you can
18
- = link_to('Abandon registration', effective_events.event_event_registration_path(registration.event, registration), 'data-confirm': "Really delete #{registration}?", 'data-method': :delete, class: 'btn btn-danger')
19
- to register for another event.
9
+ - if registration.draft?
10
+ %p
11
+ Your registration for
12
+ = link_to(registration.event, effective_events.event_path(registration.event))
13
+ is incomplete
14
+
15
+ %p
16
+ Please
17
+ = link_to("Continue registration for #{registration.event}", effective_events.event_event_registration_build_path(registration.event, registration, registration.next_step), 'data-turbolinks' => false, class: 'btn btn-primary')
18
+ or you can
19
+ = link_to('Abandon registration', effective_events.event_event_registration_path(registration.event, registration), 'data-confirm': "Really delete registration for #{registration.event}?", 'data-method': :delete, class: 'btn btn-danger')
20
+ to register for another event.
21
+
22
+ - if registration.submitted?
23
+ %p
24
+ Your registration for
25
+ = link_to(registration.event, effective_events.event_path(registration.event))
26
+ has been submitted. You're all done!
27
+
28
+ - if registration.submitted? && registration.event.delayed_payment_date_upcoming?
29
+ %p= registration.submit_order.delayed_payment_info
30
+
31
+ - if registration.submitted? && registration.event.delayed_payment_date_upcoming? && registration.can_visit_step?(:tickets)
32
+ %p
33
+ You can #{link_to('change your registration', effective_events.event_event_registration_build_path(registration.event, registration, :tickets))} until the payment date
34
+ or
35
+ = link_to('abandon registration', effective_events.event_event_registration_path(registration.event, registration), 'data-confirm': "Really delete registration for #{registration.event}?", 'data-method': :delete)
36
+ to cancel and register for another event.
20
37
 
21
38
  %hr
22
39
 
@@ -23,3 +23,8 @@
23
23
  %td
24
24
  - event_registration.orders.each do |order|
25
25
  = link_to(order, effective_orders.order_path(order))
26
+
27
+ - if event_registration.event.delayed?
28
+ %tr
29
+ %th Payment Date
30
+ %td= event_registration.event.delayed_payment_date.strftime('%F')
@@ -16,4 +16,8 @@
16
16
  = f.has_many :event_addons, f.object.build_event_addons do |fp|
17
17
  = render('effective/event_addons/fields', f: fp, event: f.object.event)
18
18
 
19
+ - if resource.delayed_payment_date_upcoming? && resource.submit_order.present?
20
+ .alert.alert-info If the price of your registration changes, your order will be automatically updated.
21
+
22
+ %hr
19
23
  = f.save 'Save and Continue'
@@ -14,3 +14,7 @@
14
14
  = card do
15
15
  = render_checkout_step2(resource.submit_order, purchased_url: wizard_path(:complete), deferred_url: wizard_path(:submitted), declined_url: wizard_path(:checkout))
16
16
 
17
+
18
+ - if resource.submit_order.delayed? && resource.submit_order.deferred?
19
+ = link_to 'Save and Continue', wizard_path(:submitted), class: 'btn btn-primary'
20
+
@@ -4,6 +4,9 @@
4
4
  - raise('expected a submitted event_registration') unless resource.submitted?
5
5
  - raise('expected a deffered event_registration submit_order') unless resource.submit_order&.deferred?
6
6
 
7
+ - if resource.event.delayed?
8
+ - raise('expected event delayed_payment_date to match order delayed_payment_date') unless resource.event.delayed_payment_date == resource.submit_order.delayed_payment_date
9
+
7
10
  .mb-4
8
11
  = link_to "Return to Dashboard", return_to_dashboard_path, class: 'btn btn-lg btn-primary btn-block'
9
12
 
@@ -14,6 +17,15 @@
14
17
  %h3 Incomplete Ticket Information
15
18
  = render 'effective/event_registrations/form_blank_registrants', event_registration: resource
16
19
 
20
+ - if resource.delayed_payment_date_upcoming? && resource.can_visit_step?(:tickets)
21
+ - order = resource.submit_order
22
+
23
+ = card do
24
+ %h3 All done
25
+ %p Your registration for #{resource.event} has been submitted. You're all done!
26
+ %p= resource.submit_order.delayed_payment_info
27
+ %p You can #{link_to('change your registration', wizard_path(:tickets))} until the payment date.
28
+
17
29
  = render 'effective/event_registrations/event_registration', event_registration: resource
18
30
  = render 'effective/event_registrations/orders', event_registration: resource
19
31
 
@@ -9,4 +9,8 @@
9
9
  = f.has_many :event_registrants, f.object.build_event_registrants do |fr|
10
10
  = render('effective/event_registrants/fields', f: fr, event: f.object.event, namespace: :events)
11
11
 
12
+ - if resource.delayed_payment_date_upcoming? && resource.submit_order.present?
13
+ .alert.alert-info If the price of your registration changes, your order will be automatically updated.
14
+
15
+ %hr
12
16
  = f.save 'Save and Continue'
@@ -1,3 +1,3 @@
1
1
  module EffectiveEvents
2
- VERSION = '0.13.0'.freeze
2
+ VERSION = '0.13.1'.freeze
3
3
  end
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.13.0
4
+ version: 0.13.1
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-05-30 00:00:00.000000000 Z
11
+ date: 2024-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails