Class: StudyEngine::Assessment

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/study_engine/assessment.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.by_event(event) ⇒ Object



14
15
16
# File 'app/models/study_engine/assessment.rb', line 14

def self.by_event event
  where(event: event)
end

.by_site(site) ⇒ Object



23
24
25
# File 'app/models/study_engine/assessment.rb', line 23

def self.by_site site
  where("study_id RLIKE '...-#{site}-....'")
end

.by_study_id(study_id) ⇒ Object



18
19
20
21
# File 'app/models/study_engine/assessment.rb', line 18

def self.by_study_id study_id
  return none unless study_id
  where(study_id: study_id)
end

Instance Method Details

#by_mail?Boolean

Returns:

  • (Boolean)


97
98
99
# File 'app/models/study_engine/assessment.rb', line 97

def by_mail?
  method_applied == "By mail"
end

#by_url?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'app/models/study_engine/assessment.rb', line 93

def by_url?
  method_applied == "By URL"
end

#complete?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'app/models/study_engine/assessment.rb', line 77

def complete?
  current_result.nil?
end

#coordinator_emailObject



33
34
35
# File 'app/models/study_engine/assessment.rb', line 33

def coordinator_email
  coordinator.try(:email)
end

#current_resultObject



61
62
63
# File 'app/models/study_engine/assessment.rb', line 61

def current_result
  results.find { |result| !result.finished? }
end

#full_historyObject



89
90
91
# File 'app/models/study_engine/assessment.rb', line 89

def full_history
  persisted_results.flat_map(&:answers).map(&:question_id)
end

#group_index_nameObject



101
102
103
104
# File 'app/models/study_engine/assessment.rb', line 101

def group_index_name
  return "" if group_index.nil?
  event_groups[group_index]
end

#incomplete?Boolean

Returns:

  • (Boolean)


81
82
83
# File 'app/models/study_engine/assessment.rb', line 81

def incomplete?
  !complete?
end

#notes?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'app/models/study_engine/assessment.rb', line 45

def notes?
  notes.present?
end

#percent_completeObject



65
66
67
# File 'app/models/study_engine/assessment.rb', line 65

def percent_complete
  (results.select(&:finished?).count / results.count.to_f * 100).round
end

#restarted_assessmentObject



37
38
39
# File 'app/models/study_engine/assessment.rb', line 37

def restarted_assessment
  Assessment.by_study_id(study_id).where(event: event).where.not(id: id).last
end

#resultsObject



51
52
53
54
55
56
57
58
59
# File 'app/models/study_engine/assessment.rb', line 51

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_summaryObject



85
86
87
# File 'app/models/study_engine/assessment.rb', line 85

def results_summary
  "#{results.select(&:finished?).count}/#{results.count}"
end

#save_answer(answer) ⇒ Object



71
72
73
74
75
# File 'app/models/study_engine/assessment.rb', line 71

def save_answer answer
  current_result.save_answer answer
  save!
  touch :assessment_updated_at
end

#stream_idObject



41
42
43
# File 'app/models/study_engine/assessment.rb', line 41

def stream_id
  StudyID.new("STR-#{study_id.site}-#{1000 + id}") unless new_record?
end

#timestamp_attributes_for_createObject



10
11
12
# File 'app/models/study_engine/assessment.rb', line 10

def timestamp_attributes_for_create
  super + [:assessment_updated_at]
end