plugins/organization_ratings/lib/organization_rating.rb
class OrganizationRating < ApplicationRecord
belongs_to :person, optional: true
belongs_to :organization, optional: true
belongs_to :comment, optional: true
attr_accessible :value, :person, :organization, :comment
validates :value,
presence: true, inclusion: {
in: 1..5, message: _("must be between 1 and 5")
}
validates :organization_id, :person_id,
presence: true
def display_full_info_to?(person)
(person.is_admin? || person == self.person ||
self.organization.is_admin?(person))
end
def task_status
tasks = CreateOrganizationRatingComment.where(target_id: self.organization.id, requestor_id: self.person.id)
task = tasks.detect { |t| t.organization_rating_id == self.id }
task.status if task.present?
end
def self.statistics_for_profile(organization)
ratings = OrganizationRating.where(organization_id: organization)
average = ratings.average(:value)
total = ratings.size
if average
average = (average - average.truncate) >= 0.5 ? average.ceil : average.floor
end
{ average: average, total: total }
end
end