Class: Effective::LearndashEnrollment
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Effective::LearndashEnrollment
- Defined in:
- app/models/effective/learndash_enrollment.rb
Constant Summary collapse
- PROGRESS_STATUSES =
Only admin can mark finished Finished is treated as an admin override for completed?
['not-started', 'in-progress', 'completed', 'finished']
Instance Method Summary collapse
- #assign_api_attributes(data = nil) ⇒ Object
-
#completed? ⇒ Boolean
Checked to see if the course is done throughout.
- #completed_on ⇒ Object
-
#finished? ⇒ Boolean
Admin override to completed.
- #in_progress? ⇒ Boolean
- #mark_as_finished! ⇒ Object
- #not_started? ⇒ Boolean
- #refresh!(force: false) ⇒ Object
-
#reportable_scopes ⇒ Object
effective_reports.
- #to_s ⇒ Object
-
#unfinish! ⇒ Object
Guess old status.
Instance Method Details
#assign_api_attributes(data = nil) ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'app/models/effective/learndash_enrollment.rb', line 106 def assign_api_attributes(data = nil) data ||= EffectiveLearndash.api.find_enrollment(self) || EffectiveLearndash.api.create_enrollment(self) assign_attributes( last_synced_at: Time.zone.now, last_step: data[:last_step], steps_completed: data[:steps_completed], steps_total: data[:steps_total], date_started: Time.use_zone('UTC') { Time.zone.parse(data[:date_started]) }, date_completed: (Time.use_zone('UTC') { Time.zone.parse(data[:date_completed]) } if data[:date_completed].present?) ) assign_attributes(progress_status: data[:progress_status]) unless finished? true end |
#completed? ⇒ Boolean
Checked to see if the course is done throughout
72 73 74 |
# File 'app/models/effective/learndash_enrollment.rb', line 72 def completed? progress_status == 'completed' || finished? end |
#completed_on ⇒ Object
76 77 78 |
# File 'app/models/effective/learndash_enrollment.rb', line 76 def completed_on date_completed || (created_at if finished?) end |
#finished? ⇒ Boolean
Admin override to completed
67 68 69 |
# File 'app/models/effective/learndash_enrollment.rb', line 67 def finished? progress_status == 'finished' end |
#in_progress? ⇒ Boolean
62 63 64 |
# File 'app/models/effective/learndash_enrollment.rb', line 62 def in_progress? progress_status == 'in-progress' end |
#mark_as_finished! ⇒ Object
80 81 82 |
# File 'app/models/effective/learndash_enrollment.rb', line 80 def mark_as_finished! update!(progress_status: 'finished') end |
#not_started? ⇒ Boolean
58 59 60 |
# File 'app/models/effective/learndash_enrollment.rb', line 58 def not_started? progress_status == 'not-started' end |
#refresh!(force: false) ⇒ Object
97 98 99 100 101 102 103 104 |
# File 'app/models/effective/learndash_enrollment.rb', line 97 def refresh!(force: false) unless force return if last_synced_at.present? && (Time.zone.now - last_synced_at) < 5 end assign_api_attributes save! end |
#reportable_scopes ⇒ Object
effective_reports
39 40 41 |
# File 'app/models/effective/learndash_enrollment.rb', line 39 def reportable_scopes { completed: nil, in_progress: nil, not_started: nil } end |
#to_s ⇒ Object
54 55 56 |
# File 'app/models/effective/learndash_enrollment.rb', line 54 def to_s persisted? ? "#{learndash_user} #{learndash_course}" : 'learndash enrollment' end |
#unfinish! ⇒ Object
Guess old status
85 86 87 88 89 90 91 92 93 94 95 |
# File 'app/models/effective/learndash_enrollment.rb', line 85 def unfinish! if date_completed.present? assign_attributes(progress_status: 'completed') elsif date_started.present? assign_attributes(progress_status: 'in-progress') else assign_attributes(progress_status: 'not-started') end save! end |