Class: SurveyEnrollment

Inherits:
ApplicationRecord show all
Defined in:
app/models/survey_enrollment.rb

Overview

== Schema Information

Table name: survey_enrollments
Database name: primary

id :bigint not null, primary key
enrollment_date :datetime
state :string not null
employee_id :integer
party_id :integer not null
review_id :integer
survey_id :integer not null

Indexes

index_survey_enrollments_on_survey_id (survey_id)

Foreign Keys

fk_rails_... (survey_id => surveys.id)

Belongs to collapse

Has many collapse

Instance Method Summary collapse

Methods inherited from ApplicationRecord

ransackable_associations, ransackable_attributes, ransackable_scopes, ransortable_attributes, #to_relation

Methods included from Models::EventPublishable

#publish_event

Instance Method Details

#completed?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'app/models/survey_enrollment.rb', line 42

def completed?
  state == 'completed'
end

#content_completed?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'app/models/survey_enrollment.rb', line 59

def content_completed?
  progress == 100
end

#customer_topicsActiveRecord::Relation<CustomerTopic>

Returns:

See Also:



27
# File 'app/models/survey_enrollment.rb', line 27

has_many :customer_topics

#employee_survey_enrollmentsActiveRecord::Relation<EmployeeSurveyEnrollment>

Returns:

See Also:



28
# File 'app/models/survey_enrollment.rb', line 28

has_many :employee_survey_enrollments

#employeesActiveRecord::Relation<Employee>

Returns:

See Also:



29
# File 'app/models/survey_enrollment.rb', line 29

has_many :employees, through: :employee_survey_enrollments

#has_answers?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'app/models/survey_enrollment.rb', line 55

def has_answers?
  customer_topics.joins(:topic_responses).present? || customer_topics.where.not(comments: nil).present?
end

#partyParty

Returns:

See Also:



25
# File 'app/models/survey_enrollment.rb', line 25

belongs_to :party, optional: true, inverse_of: :survey_enrollments

#percentage_progressObject



38
39
40
# File 'app/models/survey_enrollment.rb', line 38

def percentage_progress
  "#{progress}%" if customer_topics.present?
end

#progressObject



34
35
36
# File 'app/models/survey_enrollment.rb', line 34

def progress
  (customer_topics.completed.size * 100) / customer_topics.size if customer_topics.present?
end

#statusObject



46
47
48
49
50
51
52
53
# File 'app/models/survey_enrollment.rb', line 46

def status
  if completed?
    "Completed"
  else
    "Ongoing - #{percentage_progress}"
  end
  #There could also be state "renewed" or "expired"
end

#surveySurvey

Returns:

See Also:



24
# File 'app/models/survey_enrollment.rb', line 24

belongs_to :survey, optional: true