effective_memberships 0.3.7 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 735da58a1a6df3aed501dc23f1d03f01aad80b53c6e90d912a7e3ca245c31145
4
- data.tar.gz: d8d83e2200d6b9e1f707bc157ef4338b94da585373473517912605eb2b2939cd
3
+ metadata.gz: a5429d3c4c93088302ef65577a3f97649d2bb56191f701a5475f41973860ad21
4
+ data.tar.gz: 276b0b0d68ebf151cf67d8f542105b656688b1bf4969c5047c13c1667d364dca
5
5
  SHA512:
6
- metadata.gz: 472f5e747d7a7ebcacb8fbf1a3072ee82e158c2672482e0f404e4165b62dc8cafb7f66a380d5e0d625fec7b7cb25de970789332ebfd3d4aa832b269b134172e3
7
- data.tar.gz: 69ade19ab5f49b8218795cefdc8b09fa53a4f53a2726907b5ed361d581f0fab6d2fe2e4ed17a69d202ad461208062a4fee6c4628ea88f94cbe9cc7063cb13c36
6
+ metadata.gz: 5b1c53a8c3cec9712413f4d2c8f58786db72d8e2a12da1f40920fa39ffae3162e67c9782c72bf290ec91b1a29e3aa93374b0c09cb09dafda6151803aec93d578
7
+ data.tar.gz: f7bb8c97dbbc5c4f45f6c8b60cc4979fc4de32822b06f4a930a69fc6e7844fba015bf2dd9fa5a4038e885ab6353497cee7a1db0aafb1ec20c561389255315fd1
@@ -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
@@ -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
@@ -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.purchase!(skip_buyer_validations: true, email: false)
222
+ order.mark_as_purchased!
223
223
  end
224
224
 
225
225
  owner.update_membership_status!
@@ -0,0 +1,7 @@
1
+ module Effective
2
+ class MembershipCard
3
+
4
+ include EffectiveMembershipsCard
5
+
6
+ end
7
+ end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module EffectiveMemberships
2
- VERSION = '0.3.7'
2
+ VERSION = '0.3.8'
3
3
  end
@@ -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.7
4
+ version: 0.3.8
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-02 00:00:00.000000000 Z
11
+ date: 2022-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -252,6 +252,7 @@ files:
252
252
  - app/controllers/effective/applicant_references_controller.rb
253
253
  - app/controllers/effective/applicants_controller.rb
254
254
  - app/controllers/effective/fee_payments_controller.rb
255
+ - app/controllers/effective/membership_cards_controller.rb
255
256
  - app/controllers/effective/memberships_directory_controller.rb
256
257
  - app/datatables/admin/effective_applicant_course_areas_datatable.rb
257
258
  - app/datatables/admin/effective_applicant_course_names_datatable.rb
@@ -273,6 +274,7 @@ files:
273
274
  - app/mailers/effective/memberships_mailer.rb
274
275
  - app/models/concerns/effective_memberships_applicant.rb
275
276
  - app/models/concerns/effective_memberships_applicant_review.rb
277
+ - app/models/concerns/effective_memberships_card.rb
276
278
  - app/models/concerns/effective_memberships_category.rb
277
279
  - app/models/concerns/effective_memberships_fee_payment.rb
278
280
  - app/models/concerns/effective_memberships_owner.rb
@@ -289,6 +291,7 @@ files:
289
291
  - app/models/effective/fee.rb
290
292
  - app/models/effective/fee_payment.rb
291
293
  - app/models/effective/membership.rb
294
+ - app/models/effective/membership_card.rb
292
295
  - app/models/effective/membership_category.rb
293
296
  - app/models/effective/membership_history.rb
294
297
  - app/models/effective/registrar.rb
@@ -379,6 +382,7 @@ files:
379
382
  - app/views/effective/fee_payments/summary.html.haml
380
383
  - app/views/effective/fees/_dashboard.html.haml
381
384
  - app/views/effective/fees/_fee.html.haml
385
+ - app/views/effective/membership_cards/index.html.haml
382
386
  - app/views/effective/memberships/_dashboard.html.haml
383
387
  - app/views/effective/memberships/_membership.html.haml
384
388
  - app/views/effective/memberships_directory/index.html.haml