Module: EffectiveCpdUser
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/effective_cpd_user.rb
Overview
EffectiveCpdUser
Mark your user model with effective_cpd_user to get a few helpers And user specific point required scores
Defined Under Namespace
Modules: Base, ClassMethods
Instance Method Summary collapse
-
#build_cpd_statement(cpd_cycle:) ⇒ Object
Find or build.
-
#build_cpd_target(cpd_cycle:) ⇒ Object
Find or build.
-
#build_cpd_targets ⇒ Object
For the form.
- #cpd_audit_cpd_required? ⇒ Boolean
- #cpd_audit_reviewer? ⇒ Boolean
- #cpd_statement(cpd_cycle:) ⇒ Object
- #cpd_target(cpd_cycle:) ⇒ Object
- #cpd_target_score(cpd_cycle:) ⇒ Object
- #cpd_target_score_required_to_submit?(cpd_cycle:) ⇒ Boolean
Instance Method Details
#build_cpd_statement(cpd_cycle:) ⇒ Object
Find or build
81 82 83 84 |
# File 'app/models/concerns/effective_cpd_user.rb', line 81 def build_cpd_statement(cpd_cycle:) raise('expected an CpdCycle') unless cpd_cycle.class.respond_to?(:effective_cpd_cycle?) cpd_statement(cpd_cycle: cpd_cycle) || cpd_statements.build(cpd_cycle: cpd_cycle) end |
#build_cpd_target(cpd_cycle:) ⇒ Object
Find or build
92 93 94 95 |
# File 'app/models/concerns/effective_cpd_user.rb', line 92 def build_cpd_target(cpd_cycle:) raise('expected an CpdCycle') unless cpd_cycle.class.respond_to?(:effective_cpd_cpd_cycle?) cpd_target(cpd_cycle: cpd_cycle) || cpd_targets.build(cpd_cycle: cpd_cycle) end |
#build_cpd_targets ⇒ Object
For the form
98 99 100 101 |
# File 'app/models/concerns/effective_cpd_user.rb', line 98 def build_cpd_targets Effective::CpdCycle.sorted.all.each { |cpd_cycle| build_cpd_target(cpd_cycle: cpd_cycle) } cpd_targets.sort_by(&:cpd_cycle_id).reverse end |
#cpd_audit_cpd_required? ⇒ Boolean
67 68 69 |
# File 'app/models/concerns/effective_cpd_user.rb', line 67 def cpd_audit_cpd_required? true end |
#cpd_audit_reviewer? ⇒ Boolean
71 72 73 |
# File 'app/models/concerns/effective_cpd_user.rb', line 71 def cpd_audit_reviewer? roles.include?(:cpd_audit_reviewer) end |
#cpd_statement(cpd_cycle:) ⇒ Object
75 76 77 78 |
# File 'app/models/concerns/effective_cpd_user.rb', line 75 def cpd_statement(cpd_cycle:) raise('expected an CpdCycle') unless cpd_cycle.class.respond_to?(:effective_cpd_cycle?) cpd_statements.find { |cpd_statement| cpd_statement.cpd_cycle_id == cpd_cycle.id } end |
#cpd_target(cpd_cycle:) ⇒ Object
86 87 88 89 |
# File 'app/models/concerns/effective_cpd_user.rb', line 86 def cpd_target(cpd_cycle:) raise('expected an CpdCycle') unless cpd_cycle.class.respond_to?(:effective_cpd_cpd_cycle?) cpd_targets.find { |cpd_target| cpd_target.cpd_cycle_id == cpd_cycle.id } end |
#cpd_target_score(cpd_cycle:) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'app/models/concerns/effective_cpd_user.rb', line 46 def cpd_target_score(cpd_cycle:) target = cpd_target(cpd_cycle: cpd_cycle) return target.score if target&.score.present? # Otherwise calculate default by membership category if self.class.try(:effective_memberships_user?) category = membership_categories_on(cpd_cycle.start_at)&.first if cpd_cycle.start_at.present? category ||= membership_categories_on(cpd_cycle.end_at)&.first if cpd_cycle.end_at.present? category ||= membership&.categories&.first category&.cpd_target_score(cpd_cycle: cpd_cycle) end end |
#cpd_target_score_required_to_submit?(cpd_cycle:) ⇒ Boolean
60 61 62 63 64 65 |
# File 'app/models/concerns/effective_cpd_user.rb', line 60 def cpd_target_score_required_to_submit?(cpd_cycle:) target = cpd_target(cpd_cycle: cpd_cycle) return target.required_to_submit? unless target&.required_to_submit.nil? cpd_cycle.required_to_submit? end |