effective_events 0.2.7 → 0.3.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: 6b159dd53c70a438439a7eeda638df7686631d082853c297d6b21564fcc8c2d0
4
- data.tar.gz: e972d51cb8ae582cd99fe71705b733e31f8a071b478139a8462a7305691dc431
3
+ metadata.gz: 3981616ffe297dac3c511f6317788d9f93ea1ca9f6334f0420fa02a8fd18b479
4
+ data.tar.gz: 4a7e53e16612ca919b8de54f8c324bfa01599a5e78dd62404d640f06b3a6eec2
5
5
  SHA512:
6
- metadata.gz: 7c9a4080b098b5f57839a2cfaba36fc51badd70ce4237774c769c3f050efb862f8379440457f749deeb18f12abf9aabb1ada13faf4bd89af787659f90374e55c
7
- data.tar.gz: 6f63f889a0aafbce687ecab76d9b90902a2f368e1b9d376e4e81866cdb1fa77ec3fb9e1a335d3f93192c5df2d067a92e5da05204d0cff44ec051a9b159b6a986
6
+ metadata.gz: 53146964ab70af09e1be3db68248e01423c185b87d8e000d6a6d3fdd65c61b723de95208ac48174496533cd0055fbe6eab98538c3f3fcea657f7089b87c3a500
7
+ data.tar.gz: e858348a4e867ca08aa954f157992528c80c16bd3618270b88f53279040fc65dc0c3440843f4dcfcbb6974ec5162c63472b7504441a2da585b88dca2585cce8e
@@ -1,5 +1,10 @@
1
1
  module Admin
2
2
  class EffectiveEventAddonsDatatable < Effective::Datatable
3
+ filters do
4
+ scope :unarchived, label: "All"
5
+ scope :archived
6
+ end
7
+
3
8
  datatable do
4
9
  col :updated_at, visible: false
5
10
  col :created_at, visible: false
@@ -23,7 +28,7 @@ module Admin
23
28
  end
24
29
 
25
30
  collection do
26
- scope = Effective::EventAddon.deep.purchased
31
+ scope = Effective::EventAddon.deep.purchased.includes(:purchased_order, :owner)
27
32
 
28
33
  if attributes[:event_id].present?
29
34
  scope = scope.where(event: event)
@@ -1,5 +1,10 @@
1
1
  module Admin
2
2
  class EffectiveEventProductsDatatable < Effective::Datatable
3
+ filters do
4
+ scope :unarchived, label: "All"
5
+ scope :archived
6
+ end
7
+
3
8
  datatable do
4
9
  reorder :position
5
10
 
@@ -12,8 +17,6 @@ module Admin
12
17
  col :title
13
18
  col :price, as: :price
14
19
 
15
- col :archived
16
-
17
20
  col :capacity_to_s, label: 'Capacity' do |ticket|
18
21
  if ticket.capacity.present?
19
22
  "#{ticket.capacity_available} remaining / #{ticket.capacity} total"
@@ -1,5 +1,10 @@
1
1
  module Admin
2
2
  class EffectiveEventRegistrantsDatatable < Effective::Datatable
3
+ filters do
4
+ scope :unarchived, label: "All"
5
+ scope :archived
6
+ end
7
+
3
8
  datatable do
4
9
  col :updated_at, visible: false
5
10
  col :created_at, visible: false
@@ -1,5 +1,10 @@
1
1
  module Admin
2
2
  class EffectiveEventTicketsDatatable < Effective::Datatable
3
+ filters do
4
+ scope :unarchived, label: "All"
5
+ scope :archived
6
+ end
7
+
3
8
  datatable do
4
9
  reorder :position
5
10
 
@@ -13,8 +18,6 @@ module Admin
13
18
  col :regular_price, as: :price
14
19
  col :early_bird_price, as: :price
15
20
 
16
- col :archived
17
-
18
21
  col :capacity_to_s, label: 'Capacity' do |ticket|
19
22
  if ticket.capacity.present?
20
23
  "#{ticket.capacity_available} remaining / #{ticket.capacity} total"
@@ -3,8 +3,17 @@
3
3
  class EffectiveEventAddonsDatatable < Effective::Datatable
4
4
  datatable do
5
5
 
6
- col :event_product, search: :string, label: 'Product'
6
+ col :event_product, search: :string, label: 'Product' do |er|
7
+ [
8
+ er.event_product.to_s,
9
+ (content_tag(:span, 'Archived', class: 'badge badge-warning') if er.event_product&.archived?)
10
+ ].compact.join('<br>').html_safe
11
+ end
12
+
7
13
  col :price, as: :price
14
+
15
+ col :archived, visible: false
16
+
8
17
  # col :notes
9
18
  # no actions_col
10
19
  end
@@ -3,7 +3,12 @@
3
3
  class EffectiveEventRegistrantsDatatable < Effective::Datatable
4
4
  datatable do
5
5
 
6
- col :event_ticket, search: :string, label: 'Ticket'
6
+ col :event_ticket, search: :string, label: 'Ticket' do |er|
7
+ [
8
+ er.event_ticket.to_s,
9
+ (content_tag(:span, 'Archived', class: 'badge badge-warning') if er.event_ticket&.archived?)
10
+ ].compact.join('<br>').html_safe
11
+ end
7
12
 
8
13
  col :name do |er|
9
14
  "#{er.first_name} #{er.last_name}<br><small>#{mail_to(er.email)}</small>"
@@ -18,6 +23,8 @@ class EffectiveEventRegistrantsDatatable < Effective::Datatable
18
23
  col :price, as: :price
19
24
  col :notes
20
25
 
26
+ col :archived, visible: false
27
+
21
28
  # no actions_col
22
29
  end
23
30
 
@@ -1,30 +1,38 @@
1
1
  module EffectiveEventsHelper
2
2
 
3
- def effective_events_event_tickets_collection(event)
3
+ def effective_events_event_tickets_collection(event, namespace = nil)
4
4
  raise('expected an Effective::Event') unless event.kind_of?(Effective::Event)
5
5
 
6
- event.event_tickets.reject(&:archived?).map do |ticket|
6
+ # Allow an admin to assign archived tickets
7
+ authorized = (namespace == :admin)
8
+ tickets = (authorized ? event.event_tickets : event.event_tickets.reject(&:archived?))
9
+
10
+ tickets.map do |ticket|
7
11
  title = ticket.to_s
8
12
  price = (ticket.price == 0 ? '$0' : price_to_currency(ticket.price))
9
13
  remaining = (ticket.capacity.present? ? "#{ticket.capacity_available} remaining" : nil)
10
14
 
11
15
  label = [title, price, remaining].compact.join(' - ')
12
- disabled = { disabled: :disabled } unless ticket.available?
16
+ disabled = { disabled: :disabled } unless (authorized || ticket.available?)
13
17
 
14
18
  [label, ticket.to_param, disabled].compact
15
19
  end
16
20
  end
17
21
 
18
- def effective_events_event_products_collection(event)
22
+ def effective_events_event_products_collection(event, namespace = nil)
19
23
  raise('expected an Effective::Event') unless event.kind_of?(Effective::Event)
20
24
 
21
- event.event_products.reject(&:archived?).map do |product|
25
+ # Allow an admin to assign archived products
26
+ authorized = (namespace == :admin)
27
+ products = (authorized ? event.event_products : event.event_products.reject(&:archived?))
28
+
29
+ products.map do |product|
22
30
  title = product.to_s
23
31
  price = (product.price == 0 ? '$0' : price_to_currency(product.price))
24
32
  remaining = (product.capacity.present? ? "#{product.capacity_available} remaining" : nil)
25
33
 
26
34
  label = [title, price, remaining].compact.join(' - ')
27
- disabled = { disabled: :disabled } unless product.available?
35
+ disabled = { disabled: :disabled } unless (authorized || product.available?)
28
36
 
29
37
  [label, product.to_param, disabled].compact
30
38
  end
@@ -6,6 +6,7 @@
6
6
  module Effective
7
7
  class EventAddon < ActiveRecord::Base
8
8
  acts_as_purchasable
9
+ acts_as_archived
9
10
 
10
11
  log_changes(to: :event) if respond_to?(:log_changes)
11
12
 
@@ -23,6 +24,8 @@ module Effective
23
24
  effective_resource do
24
25
  notes :text
25
26
 
27
+ archived :boolean
28
+
26
29
  # Acts as Purchasable
27
30
  price :integer
28
31
  qb_item_name :string
@@ -32,7 +35,7 @@ module Effective
32
35
  end
33
36
 
34
37
  scope :sorted, -> { order(:id) }
35
- scope :deep, -> { all }
38
+ scope :deep, -> { includes(:event, :event_product) }
36
39
 
37
40
  before_validation(if: -> { event_registration.present? }) do
38
41
  self.event ||= event_registration.event
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Effective
4
4
  class EventProduct < ActiveRecord::Base
5
+ acts_as_archived
6
+
5
7
  belongs_to :event
6
8
 
7
9
  has_many :event_addons
@@ -3,6 +3,7 @@
3
3
  module Effective
4
4
  class EventRegistrant < ActiveRecord::Base
5
5
  acts_as_purchasable
6
+ acts_as_archived
6
7
 
7
8
  log_changes(to: :event) if respond_to?(:log_changes)
8
9
 
@@ -26,6 +27,8 @@ module Effective
26
27
  number :string
27
28
  notes :text
28
29
 
30
+ archived :boolean
31
+
29
32
  # Acts as Purchasable
30
33
  price :integer
31
34
  qb_item_name :string
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Effective
4
4
  class EventTicket < ActiveRecord::Base
5
+ acts_as_archived
6
+
5
7
  belongs_to :event
6
8
 
7
9
  has_many :event_registrants
@@ -8,6 +8,8 @@
8
8
 
9
9
  = render 'effective/event_addons/fields', f: f, event: event_addon.event
10
10
 
11
+ = f.check_box :archived, label: "Archive this addon. It will be displayed as archived on the owner's event registration"
12
+
11
13
  - if f.object.new_record?
12
14
  = f.submit 'Save and Mark Paid'
13
15
  - else
@@ -6,7 +6,9 @@
6
6
  - else
7
7
  = f.static_field :owner
8
8
 
9
- = render 'effective/event_registrants/fields', f: f, event: event_registrant.event
9
+ = render 'effective/event_registrants/fields', f: f, event: event_registrant.event, namespace: :admin
10
+
11
+ = f.check_box :archived, label: "Archive this registrant. It will be displayed as archived on the owner's event registration"
10
12
 
11
13
  - if f.object.new_record?
12
14
  = f.submit 'Save and Mark Paid'
@@ -3,7 +3,10 @@
3
3
  - if f.object.purchased?
4
4
  = f.static_field :event_ticket, label: 'Purchased ticket'
5
5
  - else
6
- = f.select :event_ticket_id, effective_events_event_tickets_collection(event), label: 'Ticket'
6
+ = f.select :event_ticket_id, effective_events_event_tickets_collection(event, namespace), label: 'Ticket'
7
+
8
+ - if f.object.purchased? && namespace == :admin
9
+ = f.select :event_ticket_id, effective_events_event_tickets_collection(event, namespace), label: 'Change Ticket', hint: 'Admin only. Change the purchased ticket. This will not create charges, alter the original order, or consider ticket capacity.'
7
10
 
8
11
  .row
9
12
  .col-lg= f.text_field :first_name
@@ -17,7 +17,6 @@
17
17
  %th Registered by
18
18
  %td= event_registration.owner
19
19
 
20
-
21
20
  - if event_registration.orders.present?
22
21
  %tr
23
22
  %th Order
@@ -7,6 +7,6 @@
7
7
  = f.hidden_field :id
8
8
 
9
9
  = f.has_many :event_registrants, f.object.build_event_registrants do |fr|
10
- = render('effective/event_registrants/fields', f: fr, event: f.object.event)
10
+ = render('effective/event_registrants/fields', f: fr, event: f.object.event, namespace: :events)
11
11
 
12
12
  = f.save 'Save and Continue'
data/config/routes.rb CHANGED
@@ -16,12 +16,29 @@ EffectiveEvents::Engine.routes.draw do
16
16
 
17
17
  namespace :admin do
18
18
  resources :events, except: [:show]
19
- resources :event_tickets, except: [:show]
20
- resources :event_products, except: [:show]
21
- resources :event_registrants, except: [:show]
22
- resources :event_addons, except: [:show]
23
19
  resources :event_registrations, only: [:index, :show]
24
20
  resources :event_notifications, except: [:show]
21
+
22
+ resources :event_tickets, except: [:show] do
23
+ post :archive, on: :member
24
+ post :unarchive, on: :member
25
+ end
26
+
27
+ resources :event_products, except: [:show] do
28
+ post :archive, on: :member
29
+ post :unarchive, on: :member
30
+ end
31
+
32
+ resources :event_registrants, except: [:show] do
33
+ post :archive, on: :member
34
+ post :unarchive, on: :member
35
+ end
36
+
37
+ resources :event_addons, except: [:show] do
38
+ post :archive, on: :member
39
+ post :unarchive, on: :member
40
+ end
41
+
25
42
  end
26
43
 
27
44
  end
@@ -64,6 +64,8 @@ class CreateEffectiveEvents < ActiveRecord::Migration[6.0]
64
64
  t.integer :purchased_order_id
65
65
  t.integer :price
66
66
 
67
+ t.boolean :archived, default: false
68
+
67
69
  t.timestamps
68
70
  end
69
71
 
@@ -99,6 +101,8 @@ class CreateEffectiveEvents < ActiveRecord::Migration[6.0]
99
101
  t.integer :purchased_order_id
100
102
  t.integer :price
101
103
 
104
+ t.boolean :archived, default: false
105
+
102
106
  t.timestamps
103
107
  end
104
108
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveEvents
2
- VERSION = '0.2.7'.freeze
2
+ VERSION = '0.3.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.2.7
4
+ version: 0.3.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: 2022-03-04 00:00:00.000000000 Z
11
+ date: 2022-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails