effective_memberships 0.3.7 → 0.3.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/effective/membership_cards_controller.rb +19 -0
- data/app/datatables/admin/effective_applicants_datatable.rb +2 -1
- data/app/datatables/admin/effective_memberships_datatable.rb +38 -1
- data/app/datatables/effective_memberships_directory_datatable.rb +1 -1
- data/app/models/concerns/effective_memberships_applicant.rb +45 -27
- data/app/models/concerns/effective_memberships_card.rb +56 -0
- data/app/models/concerns/effective_memberships_category.rb +22 -2
- data/app/models/concerns/effective_memberships_registrar.rb +1 -1
- data/app/models/effective/applicant_reference.rb +6 -1
- data/app/models/effective/membership.rb +2 -0
- data/app/models/effective/membership_card.rb +7 -0
- data/app/views/admin/applicants/_form.html.haml +1 -1
- data/app/views/effective/applicants/_stamp.html.haml +36 -0
- data/app/views/effective/applicants/stamp.html.haml +28 -0
- data/app/views/effective/membership_cards/index.html.haml +16 -0
- data/config/routes.rb +7 -0
- data/lib/effective_memberships/version.rb +1 -1
- data/lib/effective_memberships.rb +5 -1
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c506926f876b0fe6e4559cce6784e0c0ac8f30891dca21183f74dd5ab1fc5ee6
|
4
|
+
data.tar.gz: 980454f32127c3423d33aaaf4136615fac433dbede09f718ae7ebfb1c0cc3b39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29813982537ac083f937e2c1d8df597676b51eb26c7512f773f018fd91e0e2a3a389b6095f89ba8e8acdb44086313b2ff3638f926f380490366b8c7148eaaf46
|
7
|
+
data.tar.gz: 436039fe95ff3c095bb755663ec6f51674ffe620957b2f1a0557d598f634eeb651aa317476a887d818cd71bacf5a9708eb34eab2df06a3456201c6b02e1af890
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Effective
|
2
|
+
class MembershipCardsController < ApplicationController
|
3
|
+
before_action(:authenticate_user!) if defined?(Devise)
|
4
|
+
|
5
|
+
include Effective::CrudController
|
6
|
+
|
7
|
+
resource_scope -> { EffectiveMemberships.MembershipCard }
|
8
|
+
|
9
|
+
def show
|
10
|
+
membership = Effective::Membership.find(params[:id])
|
11
|
+
card = resource_scope.new(membership: membership)
|
12
|
+
|
13
|
+
EffectiveResources.authorize!(self, :show, card)
|
14
|
+
|
15
|
+
send_data(card.to_pdf, filename: card.filename, type: card.content_type, disposition: 'attachment')
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -24,11 +24,48 @@ module Admin
|
|
24
24
|
col :bad_standing_admin, visible: false
|
25
25
|
col :bad_standing_reason, visible: false
|
26
26
|
|
27
|
+
col :email do |membership|
|
28
|
+
email = membership.owner.try(:email)
|
29
|
+
mail_to(email) if email.present?
|
30
|
+
end
|
31
|
+
|
32
|
+
col :phone do |membership|
|
33
|
+
membership.owner.try(:phone) || membership.owner.try(:home_phone) || membership.owner.try(:cell_phone)
|
34
|
+
end
|
35
|
+
|
36
|
+
col :address do |membership|
|
37
|
+
membership.owner.try(:addresses).try(:first).try(:to_html)
|
38
|
+
end
|
39
|
+
|
40
|
+
col :address1, visible: false do |membership|
|
41
|
+
membership.owner.try(:addresses).try(:first).try(:address1)
|
42
|
+
end
|
43
|
+
|
44
|
+
col :address2, visible: false do |membership|
|
45
|
+
membership.owner.try(:addresses).try(:first).try(:address2)
|
46
|
+
end
|
47
|
+
|
48
|
+
col :city, visible: false do |membership|
|
49
|
+
membership.owner.try(:addresses).try(:first).try(:city)
|
50
|
+
end
|
51
|
+
|
52
|
+
col :province, visible: false do |membership|
|
53
|
+
membership.owner.try(:addresses).try(:first).try(:province)
|
54
|
+
end
|
55
|
+
|
56
|
+
col :country, visible: false do |membership|
|
57
|
+
membership.owner.try(:addresses).try(:first).try(:country)
|
58
|
+
end
|
59
|
+
|
60
|
+
col :postal_code, visible: false do |membership|
|
61
|
+
membership.owner.try(:addresses).try(:first).try(:postal_code)
|
62
|
+
end
|
63
|
+
|
27
64
|
actions_col
|
28
65
|
end
|
29
66
|
|
30
67
|
collection do
|
31
|
-
memberships = Effective::Membership.deep.all.includes(:
|
68
|
+
memberships = Effective::Membership.deep.all.includes(owner: :addresses)
|
32
69
|
|
33
70
|
raise('expected an owner_id, not user_id') if attributes[:user_id].present?
|
34
71
|
|
@@ -11,7 +11,7 @@ class EffectiveMembershipsDirectoryDatatable < Effective::Datatable
|
|
11
11
|
end
|
12
12
|
|
13
13
|
collection do
|
14
|
-
scope = Effective::Membership.deep.includes(:owner)
|
14
|
+
scope = Effective::Membership.deep.good_standing.includes(:owner)
|
15
15
|
|
16
16
|
archived_klasses.each do |klass|
|
17
17
|
scope = scope.where.not(owner_id: klass.archived.select('id'), owner_type: klass.name)
|
@@ -49,6 +49,7 @@ module EffectiveMembershipsApplicant
|
|
49
49
|
experience: 'Work Experience',
|
50
50
|
references: 'References',
|
51
51
|
files: 'Attach Files',
|
52
|
+
stamp: 'Professional Stamp',
|
52
53
|
declarations: 'Declarations',
|
53
54
|
summary: 'Review',
|
54
55
|
billing: 'Billing Address',
|
@@ -93,10 +94,14 @@ module EffectiveMembershipsApplicant
|
|
93
94
|
has_many :applicant_references, -> { order(:id) }, class_name: 'Effective::ApplicantReference', as: :applicant, inverse_of: :applicant, dependent: :destroy
|
94
95
|
accepts_nested_attributes_for :applicant_references, reject_if: :all_blank, allow_destroy: true
|
95
96
|
|
96
|
-
has_many :
|
97
|
+
has_many :stamps, -> { order(:id) }, class_name: 'Effective::Stamp', as: :applicant, inverse_of: :applicant, dependent: :destroy
|
98
|
+
accepts_nested_attributes_for :stamps, reject_if: :all_blank, allow_destroy: true
|
99
|
+
|
100
|
+
# Effective Namespace polymorphic
|
101
|
+
has_many :fees, -> { order(:id) }, class_name: 'Effective::Fee', as: :parent, inverse_of: :parent, dependent: :destroy
|
97
102
|
accepts_nested_attributes_for :fees, reject_if: :all_blank, allow_destroy: true
|
98
103
|
|
99
|
-
has_many :orders, -> { order(:id) }, as: :parent, inverse_of: :parent,
|
104
|
+
has_many :orders, -> { order(:id) }, class_name: 'Effective::Order', as: :parent, inverse_of: :parent, dependent: :destroy
|
100
105
|
accepts_nested_attributes_for :orders
|
101
106
|
|
102
107
|
effective_resource do
|
@@ -138,6 +143,8 @@ module EffectiveMembershipsApplicant
|
|
138
143
|
scope :in_progress, -> { where.not(status: [:approved, :declined]) }
|
139
144
|
scope :done, -> { where(status: [:approved, :declined]) }
|
140
145
|
|
146
|
+
scope :not_draft, -> { where.not(status: :draft) }
|
147
|
+
|
141
148
|
# Set Apply to Join or Reclassification
|
142
149
|
before_validation(if: -> { new_record? && owner.present? }) do
|
143
150
|
self.applicant_type ||= (owner.membership.blank? ? 'Apply to Join' : 'Apply to Reclassify')
|
@@ -274,6 +281,9 @@ module EffectiveMembershipsApplicant
|
|
274
281
|
|
275
282
|
applicant_steps = Array(category&.applicant_wizard_steps)
|
276
283
|
|
284
|
+
# Special logic for stamp step
|
285
|
+
applicant_steps.delete(:stamp) unless apply_to_join?
|
286
|
+
|
277
287
|
wizard_steps.select do |step|
|
278
288
|
required_steps.include?(step) || category.blank? || applicant_steps.include?(step)
|
279
289
|
end
|
@@ -282,30 +292,30 @@ module EffectiveMembershipsApplicant
|
|
282
292
|
|
283
293
|
# All Fees and Orders
|
284
294
|
def submit_fees
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
+
# Find or build submit fee
|
296
|
+
fee = fees.first || fees.build(owner: owner, fee_type: 'Applicant')
|
297
|
+
|
298
|
+
unless fee.purchased?
|
299
|
+
fee.assign_attributes(
|
300
|
+
category: category,
|
301
|
+
price: category.applicant_fee,
|
302
|
+
tax_exempt: category.applicant_fee_tax_exempt,
|
303
|
+
qb_item_name: category.applicant_fee_qb_item_name
|
304
|
+
)
|
305
|
+
end
|
295
306
|
|
296
|
-
|
297
|
-
|
307
|
+
# Update stamp price
|
308
|
+
stamp = stamps.first
|
298
309
|
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
)
|
310
|
+
if stamp.present? && !stamp.purchased?
|
311
|
+
stamp.assign_attributes(
|
312
|
+
price: category.stamp_fee,
|
313
|
+
tax_exempt: category.stamp_fee_tax_exempt,
|
314
|
+
qb_item_name: category.stamp_fee_qb_item_name
|
315
|
+
)
|
316
|
+
end
|
307
317
|
|
308
|
-
|
318
|
+
(fees + stamps)
|
309
319
|
end
|
310
320
|
|
311
321
|
# Draft -> Submitted requirements
|
@@ -315,7 +325,9 @@ module EffectiveMembershipsApplicant
|
|
315
325
|
|
316
326
|
wizard_steps[:checkout] ||= Time.zone.now
|
317
327
|
wizard_steps[:submitted] = Time.zone.now
|
328
|
+
|
318
329
|
submitted!
|
330
|
+
stamps.each { |stamp| stamp.submit! }
|
319
331
|
|
320
332
|
after_commit do
|
321
333
|
applicant_references.each { |reference| reference.notify! if reference.submitted? }
|
@@ -410,10 +422,6 @@ module EffectiveMembershipsApplicant
|
|
410
422
|
# Reset the progress so far. They have to click through screens again.
|
411
423
|
assign_attributes(wizard_steps: wizard_steps.slice(:start, :select))
|
412
424
|
|
413
|
-
# Delete any fees and orders. Keep all other data.
|
414
|
-
submit_fees.each { |fee| fee.mark_for_destruction }
|
415
|
-
submit_order.mark_for_destruction if submit_order
|
416
|
-
|
417
425
|
save!
|
418
426
|
end
|
419
427
|
|
@@ -463,6 +471,16 @@ module EffectiveMembershipsApplicant
|
|
463
471
|
category&.min_applicant_files.to_i
|
464
472
|
end
|
465
473
|
|
474
|
+
# Stamps step
|
475
|
+
def stamp
|
476
|
+
stamps.first || stamps.build(
|
477
|
+
owner: owner,
|
478
|
+
name: owner.to_s,
|
479
|
+
shipping_address: (owner.try(:shipping_address) || owner.try(:billing_address)),
|
480
|
+
price: 0
|
481
|
+
)
|
482
|
+
end
|
483
|
+
|
466
484
|
# The submit! method used to be here
|
467
485
|
# But it needs to be inside the included do block
|
468
486
|
# So see above. Sorry.
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# EffectiveMembershipsCard
|
4
|
+
# Mark your card model with include EffectiveMembershipsCard to get all the includes
|
5
|
+
|
6
|
+
module EffectiveMembershipsCard
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def effective_memberships_card?; true; end
|
11
|
+
end
|
12
|
+
|
13
|
+
included do
|
14
|
+
include ActiveModel::Model
|
15
|
+
|
16
|
+
attr_accessor :membership
|
17
|
+
validates :membership, presence: true
|
18
|
+
end
|
19
|
+
|
20
|
+
# Instance Methods
|
21
|
+
def owner
|
22
|
+
membership&.owner
|
23
|
+
end
|
24
|
+
|
25
|
+
def content_type
|
26
|
+
'application/pdf'
|
27
|
+
end
|
28
|
+
|
29
|
+
def filename
|
30
|
+
"#{self.class.name.split('::').first.downcase}-membership-card-#{Time.zone.now.strftime('%F')}.pdf"
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_pdf
|
34
|
+
raise('is invalid') unless valid?
|
35
|
+
|
36
|
+
return pdf.render() if pdf.respond_to?(:render) # Prawn
|
37
|
+
return pdf.to_pdf() if pdf.respond_to?(:to_pdf) # CombinePdf
|
38
|
+
|
39
|
+
pdf
|
40
|
+
end
|
41
|
+
|
42
|
+
def pdf
|
43
|
+
@pdf ||= build_pdf()
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def build_pdf()
|
49
|
+
raise('to be implemented')
|
50
|
+
|
51
|
+
# pdf = Prawn::Document.new
|
52
|
+
# pdf.text("Membership Card for #{membership.owner} Number #{membership.number}")
|
53
|
+
# pdf
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -180,7 +180,7 @@ module EffectiveMembershipsCategory
|
|
180
180
|
end
|
181
181
|
|
182
182
|
def applicant_wizard_steps_collection
|
183
|
-
wizard_steps = EffectiveMemberships.Applicant.
|
183
|
+
wizard_steps = EffectiveMemberships.Applicant.wizard_steps_hash
|
184
184
|
required_steps = EffectiveMemberships.Applicant.required_wizard_steps
|
185
185
|
|
186
186
|
wizard_steps.map do |step, title|
|
@@ -189,7 +189,7 @@ module EffectiveMembershipsCategory
|
|
189
189
|
end
|
190
190
|
|
191
191
|
def fee_payment_wizard_steps_collection
|
192
|
-
wizard_steps = EffectiveMemberships.FeePayment.
|
192
|
+
wizard_steps = EffectiveMemberships.FeePayment.wizard_steps_hash
|
193
193
|
required_steps = EffectiveMemberships.FeePayment.required_wizard_steps
|
194
194
|
|
195
195
|
wizard_steps.map do |step, title|
|
@@ -197,4 +197,24 @@ module EffectiveMembershipsCategory
|
|
197
197
|
end
|
198
198
|
end
|
199
199
|
|
200
|
+
def applicant_fee_qb_item_name
|
201
|
+
'Applicant'
|
202
|
+
end
|
203
|
+
|
204
|
+
def applicant_fee_tax_exempt
|
205
|
+
tax_exempt
|
206
|
+
end
|
207
|
+
|
208
|
+
def stamp_fee
|
209
|
+
0
|
210
|
+
end
|
211
|
+
|
212
|
+
def stamp_fee_qb_item_name
|
213
|
+
qb_item_name
|
214
|
+
end
|
215
|
+
|
216
|
+
def stamp_fee_tax_exempt
|
217
|
+
tax_exempt
|
218
|
+
end
|
219
|
+
|
200
220
|
end
|
@@ -219,7 +219,7 @@ module EffectiveMembershipsRegistrar
|
|
219
219
|
|
220
220
|
if owner.outstanding_fee_payment_fees.present?
|
221
221
|
order = Effective::Order.new(items: owner.outstanding_fee_payment_fees, user: owner)
|
222
|
-
order.
|
222
|
+
order.mark_as_purchased!
|
223
223
|
end
|
224
224
|
|
225
225
|
owner.update_membership_status!
|
@@ -2,7 +2,12 @@ module Effective
|
|
2
2
|
class ApplicantReference < ActiveRecord::Base
|
3
3
|
acts_as_tokened
|
4
4
|
acts_as_addressable :reference
|
5
|
-
|
5
|
+
|
6
|
+
acts_as_statused(
|
7
|
+
:submitted, # Was submitted by the applicant
|
8
|
+
:completed # Was completed by the reference.
|
9
|
+
)
|
10
|
+
|
6
11
|
log_changes(to: :applicant) if respond_to?(:log_changes)
|
7
12
|
|
8
13
|
belongs_to :applicant, polymorphic: true
|
@@ -29,6 +29,8 @@ module Effective
|
|
29
29
|
scope :deep, -> { includes(membership_categories: :category) }
|
30
30
|
scope :sorted, -> { order(:id) }
|
31
31
|
|
32
|
+
scope :good_standing, -> { where(bad_standing: [nil, false]) }
|
33
|
+
|
32
34
|
scope :with_paid_fees_through, -> (period = nil) {
|
33
35
|
where(arel_table[:fees_paid_period].gteq(period || EffectiveMemberships.Registrar.current_period))
|
34
36
|
}
|
@@ -35,7 +35,7 @@
|
|
35
35
|
|
36
36
|
- if applicant.owner.applicants.any? { |other| other.was_submitted? && other.id != applicant.id }
|
37
37
|
= tab 'Other Applications' do
|
38
|
-
= render_datatable(Admin::EffectiveApplicantsDatatable.new(
|
38
|
+
= render_datatable(Admin::EffectiveApplicantsDatatable.new(owner: applicant.owner, except_id: applicant.id))
|
39
39
|
|
40
40
|
- if applicant.persisted? && applicant.respond_to?(:log_changes_datatable)
|
41
41
|
= tab 'Logs' do
|
@@ -0,0 +1,36 @@
|
|
1
|
+
.card
|
2
|
+
.card-body
|
3
|
+
.row
|
4
|
+
.col-sm
|
5
|
+
%h5.card-title= applicant.wizard_step_title(:stamp)
|
6
|
+
.col-sm-auto.text-right
|
7
|
+
= link_to('Edit', wizard_path(:stamp)) if edit_effective_wizard?
|
8
|
+
|
9
|
+
- applicant.stamps.each do |stamp|
|
10
|
+
%table.table.table-sm
|
11
|
+
%tbody
|
12
|
+
%tr
|
13
|
+
%th Name
|
14
|
+
%td= stamp.name
|
15
|
+
|
16
|
+
%tr
|
17
|
+
%th Name Confirmation
|
18
|
+
%td= stamp.name_confirmation
|
19
|
+
|
20
|
+
%tr
|
21
|
+
%th Category
|
22
|
+
%td= stamp.category
|
23
|
+
|
24
|
+
- if stamp.shipping_address.present?
|
25
|
+
%tr
|
26
|
+
%th Shipping Address
|
27
|
+
%td= stamp.shipping_address.to_html
|
28
|
+
|
29
|
+
- if applicant.was_approved?
|
30
|
+
%tr
|
31
|
+
%th Submitted
|
32
|
+
%td= stamp.submitted_at&.strftime('%F') || '-'
|
33
|
+
|
34
|
+
%tr
|
35
|
+
%th Issued
|
36
|
+
%td= stamp.issued_at&.strftime('%F') || 'Not Issued'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
= render 'layout' do
|
2
|
+
= render 'effective/applicants/content', resource: resource
|
3
|
+
|
4
|
+
.card
|
5
|
+
.card-body
|
6
|
+
%p Should your application be approved, you are eligible to receive a Professional Stamp.
|
7
|
+
|
8
|
+
%p Please confirm your name as it should appear on any Professional Stamp.
|
9
|
+
|
10
|
+
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
11
|
+
= f.hidden_field :id
|
12
|
+
|
13
|
+
= f.fields_for(:stamps, f.object.stamp) do |fs|
|
14
|
+
= fs.hidden_field :applicant_id
|
15
|
+
= fs.hidden_field :applicant_type
|
16
|
+
|
17
|
+
= fs.hidden_field :owner_id
|
18
|
+
= fs.hidden_field :owner_type
|
19
|
+
|
20
|
+
= fs.hidden_field :price
|
21
|
+
= fs.hidden_field :tax_exempt
|
22
|
+
= fs.hidden_field :qb_item_name
|
23
|
+
|
24
|
+
= render 'effective/stamps/fields', f: fs
|
25
|
+
|
26
|
+
%p Stamps will be processed after approval of this application.
|
27
|
+
|
28
|
+
= f.save 'Save and Continue'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
- owners = current_user.effective_memberships_owners
|
2
|
+
|
3
|
+
- owners.each do |owner|
|
4
|
+
- membership = owner.membership
|
5
|
+
- card = EffectiveMemberships.MembershipCard.new(membership: membership)
|
6
|
+
|
7
|
+
- next unless EffectiveResources.authorized?(self, :show, card)
|
8
|
+
|
9
|
+
= card('Membership Card') do
|
10
|
+
%p
|
11
|
+
Your membership card for
|
12
|
+
= membership.categories.to_sentence
|
13
|
+
= membership.owner.to_s
|
14
|
+
is available for download:
|
15
|
+
|
16
|
+
%p= link_to 'Download Membership Card', effective_memberships.membership_card_membership_path(membership, format: :pdf), class: 'btn btn-primary'
|
data/config/routes.rb
CHANGED
@@ -18,6 +18,13 @@ EffectiveMemberships::Engine.routes.draw do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
get '/directory', to: 'memberships_directory#index'
|
21
|
+
|
22
|
+
resources :membership_cards, only: :index
|
23
|
+
|
24
|
+
resources :memberships, only: [] do
|
25
|
+
get :membership_card, on: :member, to: 'membership_cards#show'
|
26
|
+
end
|
27
|
+
|
21
28
|
end
|
22
29
|
|
23
30
|
namespace :admin do
|
@@ -7,7 +7,7 @@ module EffectiveMemberships
|
|
7
7
|
def self.config_keys
|
8
8
|
[
|
9
9
|
:categories_table_name, :applicants_table_name, :applicant_reviews_table_name, :fee_payments_table_name,
|
10
|
-
:category_class_name, :applicant_class_name, :applicant_review_class_name, :fee_payment_class_name, :registrar_class_name,
|
10
|
+
:category_class_name, :applicant_class_name, :applicant_review_class_name, :fee_payment_class_name, :registrar_class_name, :membership_card_class_name,
|
11
11
|
:additional_fee_types,
|
12
12
|
:layout,
|
13
13
|
:mailer, :parent_mailer, :deliver_method, :mailer_layout, :mailer_sender, :mailer_admin, :use_effective_email_templates
|
@@ -32,6 +32,10 @@ module EffectiveMemberships
|
|
32
32
|
fee_payment_class_name&.constantize || Effective::FeePayment
|
33
33
|
end
|
34
34
|
|
35
|
+
def self.MembershipCard
|
36
|
+
membership_card_class_name&.constantize || Effective::MembershipCard
|
37
|
+
end
|
38
|
+
|
35
39
|
# Singleton
|
36
40
|
def self.Registrar
|
37
41
|
klass = registrar_class_name&.constantize || Effective::Registrar
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_memberships
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.10
|
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-02-
|
11
|
+
date: 2022-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: effective_products
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: effective_resources
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -252,6 +266,7 @@ files:
|
|
252
266
|
- app/controllers/effective/applicant_references_controller.rb
|
253
267
|
- app/controllers/effective/applicants_controller.rb
|
254
268
|
- app/controllers/effective/fee_payments_controller.rb
|
269
|
+
- app/controllers/effective/membership_cards_controller.rb
|
255
270
|
- app/controllers/effective/memberships_directory_controller.rb
|
256
271
|
- app/datatables/admin/effective_applicant_course_areas_datatable.rb
|
257
272
|
- app/datatables/admin/effective_applicant_course_names_datatable.rb
|
@@ -273,6 +288,7 @@ files:
|
|
273
288
|
- app/mailers/effective/memberships_mailer.rb
|
274
289
|
- app/models/concerns/effective_memberships_applicant.rb
|
275
290
|
- app/models/concerns/effective_memberships_applicant_review.rb
|
291
|
+
- app/models/concerns/effective_memberships_card.rb
|
276
292
|
- app/models/concerns/effective_memberships_category.rb
|
277
293
|
- app/models/concerns/effective_memberships_fee_payment.rb
|
278
294
|
- app/models/concerns/effective_memberships_owner.rb
|
@@ -289,6 +305,7 @@ files:
|
|
289
305
|
- app/models/effective/fee.rb
|
290
306
|
- app/models/effective/fee_payment.rb
|
291
307
|
- app/models/effective/membership.rb
|
308
|
+
- app/models/effective/membership_card.rb
|
292
309
|
- app/models/effective/membership_category.rb
|
293
310
|
- app/models/effective/membership_history.rb
|
294
311
|
- app/models/effective/registrar.rb
|
@@ -346,6 +363,7 @@ files:
|
|
346
363
|
- app/views/effective/applicants/_orders.html.haml
|
347
364
|
- app/views/effective/applicants/_references.html.haml
|
348
365
|
- app/views/effective/applicants/_select.html.haml
|
366
|
+
- app/views/effective/applicants/_stamp.html.haml
|
349
367
|
- app/views/effective/applicants/_summary.html.haml
|
350
368
|
- app/views/effective/applicants/billing.html.haml
|
351
369
|
- app/views/effective/applicants/checkout.html.haml
|
@@ -357,6 +375,7 @@ files:
|
|
357
375
|
- app/views/effective/applicants/files.html.haml
|
358
376
|
- app/views/effective/applicants/references.html.haml
|
359
377
|
- app/views/effective/applicants/select.html.haml
|
378
|
+
- app/views/effective/applicants/stamp.html.haml
|
360
379
|
- app/views/effective/applicants/start.html.haml
|
361
380
|
- app/views/effective/applicants/submitted.html.haml
|
362
381
|
- app/views/effective/applicants/summary.html.haml
|
@@ -379,6 +398,7 @@ files:
|
|
379
398
|
- app/views/effective/fee_payments/summary.html.haml
|
380
399
|
- app/views/effective/fees/_dashboard.html.haml
|
381
400
|
- app/views/effective/fees/_fee.html.haml
|
401
|
+
- app/views/effective/membership_cards/index.html.haml
|
382
402
|
- app/views/effective/memberships/_dashboard.html.haml
|
383
403
|
- app/views/effective/memberships/_membership.html.haml
|
384
404
|
- app/views/effective/memberships_directory/index.html.haml
|