effective_events 0.2.6 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/datatables/admin/effective_event_addons_datatable.rb +6 -1
- data/app/datatables/admin/effective_event_products_datatable.rb +5 -2
- data/app/datatables/admin/effective_event_registrants_datatable.rb +5 -0
- data/app/datatables/admin/effective_event_tickets_datatable.rb +5 -2
- data/app/datatables/effective_event_addons_datatable.rb +10 -1
- data/app/datatables/effective_event_registrants_datatable.rb +8 -1
- data/app/helpers/effective_events_helper.rb +12 -4
- data/app/mailers/effective/events_mailer.rb +10 -10
- data/app/models/effective/event_addon.rb +4 -1
- data/app/models/effective/event_product.rb +2 -0
- data/app/models/effective/event_registrant.rb +3 -0
- data/app/models/effective/event_ticket.rb +2 -0
- data/app/views/admin/event_addons/_form.html.haml +2 -0
- data/app/views/admin/event_registrants/_form.html.haml +3 -1
- data/app/views/effective/event_registrants/_fields.html.haml +3 -0
- data/app/views/effective/event_registrations/_summary.html.haml +0 -1
- data/app/views/effective/event_registrations/tickets.html.haml +1 -1
- data/config/effective_events.rb +1 -0
- data/config/routes.rb +21 -4
- data/db/migrate/01_create_effective_events.rb.erb +4 -0
- data/lib/effective_events/version.rb +1 -1
- data/lib/effective_events.rb +1 -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: b23a48351b1b02e030c1b6ba099fe9ee738b0f673b947dcc5b1da98b8f22a994
|
4
|
+
data.tar.gz: 1d5876003810fe4d761a8707e5592ac9f9c201de1633a824749e966a64c9b66b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e86d2d215c249564b6a2d397a80331e951e553f56b3903f3b7bce0c3b4422791d8248c754cacf4ef69d3ca09c43ef835530dd406ab62f8afbd951a682aed085
|
7
|
+
data.tar.gz: 339b835ec79679400d13c6381556a20a682bea06c71fca6bd1130ffd5a86c26f074ef1ce22d75f039491b41ddbb7fc8d3dc16dc95850f9cd6281c68a620f5729
|
@@ -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 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
|
|
@@ -3,13 +3,17 @@ module EffectiveEventsHelper
|
|
3
3
|
def effective_events_event_tickets_collection(event)
|
4
4
|
raise('expected an Effective::Event') unless event.kind_of?(Effective::Event)
|
5
5
|
|
6
|
-
|
6
|
+
# Allow an admin to assign archived tickets
|
7
|
+
authorized = EffectiveResources.authorized?(self, :admin, :effective_events)
|
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
|
@@ -18,13 +22,17 @@ module EffectiveEventsHelper
|
|
18
22
|
def effective_events_event_products_collection(event)
|
19
23
|
raise('expected an Effective::Event') unless event.kind_of?(Effective::Event)
|
20
24
|
|
21
|
-
|
25
|
+
# Allow an admin to assign archived products
|
26
|
+
authorized = EffectiveResources.authorized?(self, :admin, :effective_events)
|
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
|
@@ -1,23 +1,23 @@
|
|
1
1
|
module Effective
|
2
2
|
class EventsMailer < EffectiveEvents.parent_mailer_class
|
3
|
-
default from: -> { EffectiveEvents.mailer_sender }
|
4
|
-
layout -> { EffectiveEvents.mailer_layout }
|
5
3
|
|
4
|
+
include EffectiveMailer
|
6
5
|
include EffectiveEmailTemplatesMailer if EffectiveEvents.use_effective_email_templates
|
7
6
|
|
8
|
-
def event_registrant_purchased(
|
9
|
-
|
10
|
-
@event_registrant = event_registrant
|
7
|
+
def event_registrant_purchased(resource, opts = {})
|
8
|
+
raise('expected an Effective::EventRegistrant') unless resource.kind_of?(Effective::EventRegistrant)
|
11
9
|
|
12
|
-
|
13
|
-
|
10
|
+
@assigns = assigns_for(resource)
|
11
|
+
@event_registrant = resource
|
14
12
|
|
15
|
-
|
13
|
+
subject = subject_for(__method__, 'Event Registrant Purchased', resource, opts)
|
14
|
+
headers = headers_for(resource, opts)
|
16
15
|
|
17
|
-
|
18
|
-
resource.respond_to?(:log_changes_datatable) ? opts.merge(log: resource) : opts
|
16
|
+
mail(to: resource.email, subject: subject, **headers)
|
19
17
|
end
|
20
18
|
|
19
|
+
protected
|
20
|
+
|
21
21
|
def assigns_for(resource)
|
22
22
|
if resource.kind_of?(EventRegistrant)
|
23
23
|
return event_registrant_assigns(resource).merge(event_assigns(resource.event)).merge(event_ticket_assigns(resource.event_ticket))
|
@@ -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, -> {
|
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
|
@@ -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
|
@@ -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'
|
@@ -5,6 +5,9 @@
|
|
5
5
|
- else
|
6
6
|
= f.select :event_ticket_id, effective_events_event_tickets_collection(event), label: 'Ticket'
|
7
7
|
|
8
|
+
- if f.object.purchased? && namespace == :admin
|
9
|
+
= f.select :event_ticket_id, effective_events_event_tickets_collection(event), label: 'Change Ticket', hint: 'Admin only. Change the purchased ticket. This will not create charges, alter the original order, or consider ticket capacity.'
|
10
|
+
|
8
11
|
.row
|
9
12
|
.col-lg= f.text_field :first_name
|
10
13
|
.col-lg= f.text_field :last_name
|
@@ -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/effective_events.rb
CHANGED
@@ -32,6 +32,7 @@ EffectiveEvents.setup do |config|
|
|
32
32
|
# config.mailer_layout = nil # Default mailer layout
|
33
33
|
# config.mailer_sender = nil # Default From value
|
34
34
|
# config.mailer_admin = nil # Default To value for Admin correspondence
|
35
|
+
# config.mailer_subject = nil # Proc.new method used to customize Subject
|
35
36
|
|
36
37
|
# Use effective email templates for event notifications
|
37
38
|
config.use_effective_email_templates = true
|
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
|
|
data/lib/effective_events.rb
CHANGED
@@ -8,9 +8,9 @@ module EffectiveEvents
|
|
8
8
|
[
|
9
9
|
:events_table_name, :event_registrants_table_name, :event_tickets_table_name,
|
10
10
|
:event_registrations_table_name, :event_products_table_name, :event_addons_table_name,
|
11
|
+
:mailer, :parent_mailer, :deliver_method, :mailer_layout, :mailer_sender, :mailer_admin, :mailer_subject, :use_effective_email_templates,
|
11
12
|
:layout, :per_page, :use_effective_roles,
|
12
13
|
:event_registration_class_name,
|
13
|
-
:mailer, :use_effective_email_templates
|
14
14
|
]
|
15
15
|
end
|
16
16
|
|
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.3.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: 2022-03-
|
11
|
+
date: 2022-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|