effective_memberships 0.8.1 → 0.8.3

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: 0a2ae153f152ca4d2295c8847e7848d10dde99d015c77367606cc1d00feb8743
4
- data.tar.gz: f41d582a3c5da8491cfb82ac7129aaa796c3f4fc14ee49e5eff6e2770d725200
3
+ metadata.gz: f3936f6e8acaea0e3aea19acfb6ab2919eed75cf533997d7d3ceb9423acb67c1
4
+ data.tar.gz: d23bdf6c67f07b6d0558a4f03e40237b6a93a2a55603e9d534d4a9d63464f182
5
5
  SHA512:
6
- metadata.gz: 218f5706b65bfc70fa9cd458678fb24cfa106751f91c98a636e304dc66494879789e95bcccfebf79eb993dd7797b56b72cf640de69013ded6b117e2ca6fb0f64
7
- data.tar.gz: 2fcba0dab68d21ce5653e9d9e227895e227d887c3fbc80c2533be72cd190b1ad6a8a02b7b7041692957cd4edca505d24533fcb8653c82c3ace37623122d4498a
6
+ metadata.gz: 9245f8060285f526b024a616fe0125460fe59567140fd106c6f657f1504b9e5385157ef24f3e3ca5f1ca27ac78280929ee9ea87021ef1ad202bfd03d39d1d526
7
+ data.tar.gz: 76586e73e7f04ff55343be3012169d5afb6b8fe3265279b46aab16c9f32f6798b7582282fe63bef73cc37278376538ac004b3a21691b4a0da932270786e22664
@@ -29,7 +29,8 @@ module EffectiveMembershipsDirectory
29
29
 
30
30
  # Base collection to search. Can be configured per tenant.
31
31
  def collection
32
- Effective::Membership.directory
32
+ # Example::User.members.membership_in_good_standing.all
33
+ raise('to be implemented by app membership_directory')
33
34
  end
34
35
 
35
36
  # Search Users and Organizations for only these fields. Passed into search_any. Return nil for all.
@@ -50,14 +51,14 @@ module EffectiveMembershipsDirectory
50
51
  # Assigns the entire collection() if there are no search terms
51
52
  # Otherwise validate the search terms
52
53
  def search!
53
- @memberships = build_collection()
54
- @memberships = @memberships.none if present? && !valid?
55
- @memberships
54
+ @membership_owners = build_collection()
55
+ @membership_owners = @membership_owners.none if present? && !valid?
56
+ @membership_owners
56
57
  end
57
58
 
58
59
  # The unpaginated results of the search
59
- def memberships
60
- @memberships || collection
60
+ def membership_owners
61
+ @membership_owners || collection
61
62
  end
62
63
 
63
64
  # The paginated results
@@ -65,54 +66,38 @@ module EffectiveMembershipsDirectory
65
66
  page = (page || 1).to_i
66
67
  offset = [(page - 1), 0].max * per_page
67
68
 
68
- memberships().limit(per_page).offset(offset)
69
+ membership_owners.limit(per_page).offset(offset)
69
70
  end
70
71
 
71
72
  protected
72
73
 
73
74
  def build_collection
74
- memberships = collection()
75
- raise('expected an ActiveRecord collection') unless memberships.kind_of?(ActiveRecord::Relation)
75
+ owners = collection()
76
+ raise('expected an ActiveRecord collection') unless owners.kind_of?(ActiveRecord::Relation)
77
+ raise('expected a collection of membership_owners') unless owners.klass.respond_to?(:effective_memberships_owner?)
76
78
 
77
79
  # Filter by term
78
80
  if term.present?
79
- memberships = search_owners(memberships, term, search_any_columns)
81
+ owners = Effective::Resource.new(owners).search_any(term, columns: search_any_columns)
80
82
  end
81
83
 
82
84
  # Filter by first name
83
85
  if first_name.present?
84
- memberships = search_owners(memberships, first_name, :first_name)
86
+ owners = Effective::Resource.new(owners).search_any(first_name, columns: :first_name)
85
87
  end
86
88
 
87
89
  # Filter by last name
88
90
  if last_name.present?
89
- memberships = search_owners(memberships, last_name, :last_name)
91
+ owners = Effective::Resource.new(owners).search_any(last_name, columns: :last_name)
90
92
  end
91
93
 
92
94
  # Filter by category
93
95
  if category.present?
94
96
  cat = EffectiveMemberships.Category.where(id: category)
95
- memberships = memberships.with_category(cat) if cat.present?
97
+ owners = owners.members_with_category(cat) if cat.present?
96
98
  end
97
99
 
98
- memberships
99
- end
100
-
101
- def search_owners(collection, term, columns = nil)
102
- results = collection.none()
103
-
104
- owner_klasses.each do |klass|
105
- search = Effective::Resource.new(klass).search_any(term, columns: columns)
106
- searched = collection.where(owner_type: klass.name, owner_id: search.select('id'))
107
-
108
- results = results.or(searched)
109
- end
110
-
111
- collection.merge(results)
112
- end
113
-
114
- def owner_klasses
115
- @owner_klasses ||= Effective::Membership.owner_klasses
100
+ owners
116
101
  end
117
102
 
118
103
  end
@@ -73,8 +73,6 @@ module Effective
73
73
  scope :not_in_good_standing, -> { with_status(EffectiveMemberships.Registrar.not_in_good_standing_status) }
74
74
  scope :in_good_standing, -> { without_status(EffectiveMemberships.Registrar.not_in_good_standing_status) }
75
75
 
76
- scope :directory, -> { deep.in_good_standing.order(:id) }
77
-
78
76
  before_validation do
79
77
  self.registration_on ||= joined_on
80
78
  end
@@ -6,12 +6,15 @@
6
6
  %p You must include #{resource.min_applicant_equivalences} or more equivalent memberships.
7
7
 
8
8
  - if resource.min_applicant_equivalences == 0
9
- %p Equivalent memberships are not required. Click the Remove button to skip adding memberships.
9
+ %p Equivalent memberships are not required.
10
+
11
+ - if resource.applicant_equivalences.blank?
12
+ %p Click Add Another to add an equivalent membership.
10
13
 
11
14
  = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
12
15
  = f.hidden_field :id
13
16
 
14
- = f.has_many(:applicant_equivalences, cards: true) do |aef|
17
+ = f.has_many(:applicant_equivalences, cards: true, build: false) do |aef|
15
18
  %h4.mb-4 Equivalent Membership
16
19
 
17
20
  = aef.text_field :name
@@ -8,9 +8,10 @@
8
8
 
9
9
  - results.in_groups_of(3).each do |group|
10
10
  .row.mt-4
11
- - group.each do |membership|
12
- - next unless membership
13
- .col-md= render('effective/membership_directory/membership', membership: membership)
11
+ - group.each do |owner|
12
+ - next unless owner
13
+ .col-md
14
+ = render('effective/membership_directory/membership_owner', membership: owner.membership, owner: owner)
14
15
 
15
16
  %nav.d-flex.justify-content-center
16
17
  = bootstrap_paginate(results, per_page: membership_directory.per_page)
@@ -1,4 +1,4 @@
1
1
  = card do
2
- %h6= membership.owner
2
+ %h6= owner
3
3
  %p= membership.categories.to_sentence
4
4
  %p= membership.statuses.to_sentence
@@ -1,3 +1,3 @@
1
1
  module EffectiveMemberships
2
- VERSION = '0.8.1'
2
+ VERSION = '0.8.3'
3
3
  end
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.8.1
4
+ version: 0.8.3
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-10-24 00:00:00.000000000 Z
11
+ date: 2022-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -481,8 +481,8 @@ files:
481
481
  - app/views/effective/membership_cards/index.html.haml
482
482
  - app/views/effective/membership_directory/_form.html.haml
483
483
  - app/views/effective/membership_directory/_layout.html.haml
484
- - app/views/effective/membership_directory/_membership.html.haml
485
484
  - app/views/effective/membership_directory/_membership_directory.html.haml
485
+ - app/views/effective/membership_directory/_membership_owner.html.haml
486
486
  - app/views/effective/membership_directory/index.html.haml
487
487
  - app/views/effective/memberships/_dashboard.html.haml
488
488
  - app/views/effective/memberships/_membership.html.haml