Class: StudyEngine::Assessment
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- StudyEngine::Assessment
- Defined in:
- app/models/study_engine/assessment.rb
Class Method Summary collapse
- .by_event(event) ⇒ Object
- .by_site(site) ⇒ Object
- .by_study_id(study_id) ⇒ Object
-
.timestamp_attributes_for_create ⇒ Object
Rails 5.1.
Instance Method Summary collapse
- #by_mail? ⇒ Boolean
- #by_url? ⇒ Boolean
- #complete? ⇒ Boolean
- #coordinator_email ⇒ Object
- #current_result ⇒ Object
- #full_history ⇒ Object
- #group_index_name ⇒ Object
- #incomplete? ⇒ Boolean
- #notes? ⇒ Boolean
- #percent_complete ⇒ Object
- #restarted_assessment ⇒ Object
- #results ⇒ Object
- #results_summary ⇒ Object
- #save_answer(answer) ⇒ Object
- #stream_id ⇒ Object
-
#timestamp_attributes_for_create ⇒ Object
Rails 5.0.
Class Method Details
.by_event(event) ⇒ Object
20 21 22 |
# File 'app/models/study_engine/assessment.rb', line 20 def self.by_event event where(event: event) end |
.by_site(site) ⇒ Object
29 30 31 |
# File 'app/models/study_engine/assessment.rb', line 29 def self.by_site site where("study_id RLIKE '...-#{site}-....'") end |
.by_study_id(study_id) ⇒ Object
24 25 26 27 |
# File 'app/models/study_engine/assessment.rb', line 24 def self.by_study_id study_id return none unless study_id where(study_id: study_id) end |
.timestamp_attributes_for_create ⇒ Object
Rails 5.1
11 12 13 |
# File 'app/models/study_engine/assessment.rb', line 11 def self. super + ["assessment_updated_at"] end |
Instance Method Details
#by_mail? ⇒ Boolean
103 104 105 |
# File 'app/models/study_engine/assessment.rb', line 103 def by_mail? method_applied == "By mail" end |
#by_url? ⇒ Boolean
99 100 101 |
# File 'app/models/study_engine/assessment.rb', line 99 def by_url? method_applied == "By URL" end |
#complete? ⇒ Boolean
83 84 85 |
# File 'app/models/study_engine/assessment.rb', line 83 def complete? current_result.nil? end |
#coordinator_email ⇒ Object
39 40 41 |
# File 'app/models/study_engine/assessment.rb', line 39 def coordinator_email coordinator.try(:email) end |
#current_result ⇒ Object
67 68 69 |
# File 'app/models/study_engine/assessment.rb', line 67 def current_result results.find { |result| !result.finished? } end |
#full_history ⇒ Object
95 96 97 |
# File 'app/models/study_engine/assessment.rb', line 95 def full_history persisted_results.flat_map(&:answers).map(&:question_id) end |
#group_index_name ⇒ Object
107 108 109 110 |
# File 'app/models/study_engine/assessment.rb', line 107 def group_index_name return "" if group_index.nil? event_groups[group_index] end |
#incomplete? ⇒ Boolean
87 88 89 |
# File 'app/models/study_engine/assessment.rb', line 87 def incomplete? !complete? end |
#notes? ⇒ Boolean
51 52 53 |
# File 'app/models/study_engine/assessment.rb', line 51 def notes? notes.present? end |
#percent_complete ⇒ Object
71 72 73 |
# File 'app/models/study_engine/assessment.rb', line 71 def percent_complete (results.select(&:finished?).count / results.count.to_f * 100).round end |
#restarted_assessment ⇒ Object
43 44 45 |
# File 'app/models/study_engine/assessment.rb', line 43 def restarted_assessment Assessment.by_study_id(study_id).where(event: event).where.not(id: id).last end |
#results ⇒ Object
57 58 59 60 61 62 63 64 65 |
# File 'app/models/study_engine/assessment.rb', line 57 def results @results ||= begin bank_ids = StudyEngine.bank_finder.call(self) return persisted_results if persisted_results.length == bank_ids.length bank_ids.map do |bank_id| persisted_results.find_or_initialize_by(bank_id: bank_id) end end end |
#results_summary ⇒ Object
91 92 93 |
# File 'app/models/study_engine/assessment.rb', line 91 def results_summary "#{results.select(&:finished?).count}/#{results.count}" end |
#save_answer(answer) ⇒ Object
77 78 79 80 81 |
# File 'app/models/study_engine/assessment.rb', line 77 def save_answer answer current_result.save_answer answer save! touch :assessment_updated_at end |
#stream_id ⇒ Object
47 48 49 |
# File 'app/models/study_engine/assessment.rb', line 47 def stream_id StudyID.new("STR-#{study_id.site}-#{1000 + id}") unless new_record? end |
#timestamp_attributes_for_create ⇒ Object
Rails 5.0
16 17 18 |
# File 'app/models/study_engine/assessment.rb', line 16 def super + ["assessment_updated_at"] end |