effective_memberships 0.3.7 → 0.3.8

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: 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