effective_memberships 0.6.3 → 0.6.6
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 +4 -4
- data/app/models/concerns/effective_memberships_applicant.rb +2 -2
- data/app/models/concerns/effective_memberships_registrar.rb +46 -16
- data/app/models/concerns/effective_memberships_status.rb +5 -0
- data/app/views/effective/applicants/equivalences.html.haml +4 -1
- data/app/views/effective/applicants/experience.html.haml +3 -0
- data/lib/effective_memberships/version.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: d5a9ac211f2370d13d88ee7b8ce0345c4c8363c530dd60dccbe4bc2da046bf98
|
4
|
+
data.tar.gz: 69f0f40f0116c65bea68c949424921b2a87b821e50e664fc73b1312f90c79a79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7edb8681ca649e8aa121cf38add83c1e21277a968682e8b183f5f3197a84dd061f5ebac01c0da824c64f59c93f47e17d46ea43d81ee4b31a1cb485235b24f7e7
|
7
|
+
data.tar.gz: 4fe46479e76c85a356861d4b42f2e1b59675c3726e61c9791044b85133679e87f5d2b66e7a719311fe6c15a6d25a89db04f2b4f20232c462c5a028cf2c013f85
|
@@ -195,7 +195,7 @@ module EffectiveMembershipsApplicant
|
|
195
195
|
before_validation(if: -> { (new_record? || current_step == :select) && owner.present? }) do
|
196
196
|
self.applicant_type ||= can_apply_applicant_types_collection().first
|
197
197
|
self.from_category = owner.membership&.category
|
198
|
-
self.from_status = owner.membership&.status
|
198
|
+
self.from_status = owner.membership&.status if reinstatement?
|
199
199
|
end
|
200
200
|
|
201
201
|
before_validation(if: -> { current_step == :experience }) do
|
@@ -559,7 +559,7 @@ module EffectiveMembershipsApplicant
|
|
559
559
|
def can_apply_applicant_types_collection
|
560
560
|
if owner.blank? || owner.membership.blank? || owner.membership.categories.blank?
|
561
561
|
['Apply to Join']
|
562
|
-
elsif owner.membership.statuses.
|
562
|
+
elsif owner.membership.statuses.any?(&:reinstatable?)
|
563
563
|
['Apply for Reinstatement', 'Apply to Join']
|
564
564
|
else
|
565
565
|
['Apply to Reclassify']
|
@@ -151,7 +151,7 @@ module EffectiveMembershipsRegistrar
|
|
151
151
|
save!(owner, date: date)
|
152
152
|
end
|
153
153
|
|
154
|
-
def reclassify!(owner, to:, date: nil, skip_fees: false)
|
154
|
+
def reclassify!(owner, to:, status: nil, date: nil, skip_fees: false)
|
155
155
|
raise('expecting a memberships owner') unless owner.class.respond_to?(:effective_memberships_owner?)
|
156
156
|
raise('owner must have an existing membership. use register! instead') if owner.membership.blank?
|
157
157
|
|
@@ -159,6 +159,7 @@ module EffectiveMembershipsRegistrar
|
|
159
159
|
|
160
160
|
raise('expecting a to memberships category') unless to.class.respond_to?(:effective_memberships_category?)
|
161
161
|
raise('expecting a from memberships category') unless from.class.respond_to?(:effective_memberships_category?)
|
162
|
+
raise('expecting a memberships status') unless status.nil? || status.class.respond_to?(:effective_memberships_status?)
|
162
163
|
raise('expected to and from to be different') if from == to
|
163
164
|
|
164
165
|
date ||= Time.zone.now
|
@@ -171,6 +172,9 @@ module EffectiveMembershipsRegistrar
|
|
171
172
|
membership.build_membership_category(category: to)
|
172
173
|
membership.membership_category(category: from).mark_for_destruction
|
173
174
|
|
175
|
+
# Assign Status
|
176
|
+
membership.build_membership_status(status: status) if status.present?
|
177
|
+
|
174
178
|
unless skip_fees
|
175
179
|
fee = owner.build_prorated_fee(date: date)
|
176
180
|
raise('already has purchased prorated fee') if fee.purchased?
|
@@ -202,32 +206,58 @@ module EffectiveMembershipsRegistrar
|
|
202
206
|
save!(owner, date: date)
|
203
207
|
end
|
204
208
|
|
205
|
-
|
206
|
-
|
207
|
-
|
209
|
+
def status_clear!(owner, date: nil)
|
210
|
+
raise('expecting a memberships owner') unless owner.class.respond_to?(:effective_memberships_owner?)
|
211
|
+
raise('owner must have an existing membership. use register! instead') if owner.membership.blank?
|
212
|
+
|
213
|
+
status_assign!(owner, date: date, status: [])
|
208
214
|
end
|
209
215
|
|
210
|
-
|
211
|
-
def status_change!(owner, to:, date: nil)
|
216
|
+
def status_add!(owner, status:, date: nil)
|
212
217
|
raise('expecting a memberships owner') unless owner.class.respond_to?(:effective_memberships_owner?)
|
213
218
|
raise('owner must have an existing membership. use register! instead') if owner.membership.blank?
|
214
219
|
|
215
|
-
|
220
|
+
status_assign!(owner, date: date, status: owner.membership.statuses + Array(status))
|
221
|
+
end
|
216
222
|
|
217
|
-
|
218
|
-
raise('expecting a
|
219
|
-
raise('
|
223
|
+
def status_remove!(owner, status:, date: nil)
|
224
|
+
raise('expecting a memberships owner') unless owner.class.respond_to?(:effective_memberships_owner?)
|
225
|
+
raise('owner must have an existing membership. use register! instead') if owner.membership.blank?
|
220
226
|
|
221
|
-
date
|
227
|
+
status_assign!(owner, date: date, status: owner.membership.statuses - Array(status))
|
228
|
+
end
|
229
|
+
|
230
|
+
def status_assign!(owner, status:, date: nil)
|
231
|
+
raise('expecting a memberships owner') unless owner.class.respond_to?(:effective_memberships_owner?)
|
222
232
|
|
223
233
|
membership = owner.membership
|
234
|
+
raise('owner must have an existing membership. use register! instead') if membership.blank?
|
224
235
|
|
225
|
-
|
226
|
-
|
227
|
-
membership.membership_status(status: from).mark_for_destruction if from.present?
|
236
|
+
statuses = Array(status)
|
237
|
+
raise('expected a memberships status') unless statuses.blank? || statuses.all? { |status| status.class.respond_to?(:effective_memberships_status?) }
|
228
238
|
|
229
|
-
#
|
230
|
-
|
239
|
+
# Add
|
240
|
+
statuses.each do |status|
|
241
|
+
next if membership.membership_status(status: status).present?
|
242
|
+
membership.build_membership_status(status: status)
|
243
|
+
end
|
244
|
+
|
245
|
+
# Remove
|
246
|
+
membership.statuses.each do |existing|
|
247
|
+
next if statuses.include?(existing)
|
248
|
+
membership.membership_status(status: existing).mark_for_destruction
|
249
|
+
end
|
250
|
+
|
251
|
+
changed = membership.membership_statuses.any? { |ms| ms.new_record? || ms.marked_for_destruction? }
|
252
|
+
|
253
|
+
if changed
|
254
|
+
date ||= Time.zone.now
|
255
|
+
|
256
|
+
membership.registration_on = date # Always new registration_on
|
257
|
+
save!(owner, date: date)
|
258
|
+
end
|
259
|
+
|
260
|
+
true
|
231
261
|
end
|
232
262
|
|
233
263
|
def remove!(owner, date: nil)
|
@@ -3,7 +3,10 @@
|
|
3
3
|
|
4
4
|
= card do
|
5
5
|
- if resource.min_applicant_equivalences > 0
|
6
|
-
|
6
|
+
%p You must include #{resource.min_applicant_equivalences} or more equivalent memberships.
|
7
|
+
|
8
|
+
- if resource.min_applicant_equivalences == 0
|
9
|
+
%p Equivalent memberships are not required. Click the Remove button to skip adding memberships.
|
7
10
|
|
8
11
|
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
9
12
|
= f.hidden_field :id
|
@@ -8,6 +8,9 @@
|
|
8
8
|
- if resource.min_applicant_experiences_months > 0
|
9
9
|
%p You must include #{resource.min_applicant_experiences_months} or more months of experience.
|
10
10
|
|
11
|
+
- if resource.min_applicant_educations == 0 && resource.min_applicant_experiences_months == 0
|
12
|
+
%p Work experience is not required. Click the Remove button to skip adding work experience.
|
13
|
+
|
11
14
|
= effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
|
12
15
|
= f.hidden_field :id
|
13
16
|
= f.error :applicant_experiences
|
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.6.
|
4
|
+
version: 0.6.6
|
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-
|
11
|
+
date: 2022-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|