Module: ReputationSystem::EvaluationMethods

Defined in:
lib/reputation_system/evaluation_methods.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



32
33
34
# File 'lib/reputation_system/evaluation_methods.rb', line 32

def self.included(klass)
  klass.extend ClassMethods
end

Instance Method Details

#add_evaluation(reputation_name, value, source, *args) ⇒ Object



49
50
51
52
53
54
55
56
# File 'lib/reputation_system/evaluation_methods.rb', line 49

def add_evaluation(reputation_name, value, source, *args)
  scope = args.first
  srn = ReputationSystem::Network.get_scoped_reputation_name(self.class.name, reputation_name, scope)
  process = ReputationSystem::Network.get_reputation_def(self.class.name, srn)[:aggregated_by]
  evaluation = ReputationSystem::Evaluation.create_evaluation(srn, value, source, self)
  rep = ReputationSystem::Reputation.find_or_create_reputation(srn, self, process)
  ReputationSystem::Reputation.update_reputation_value_with_new_source(rep, evaluation, 1, process)
end

#add_or_update_evaluation(reputation_name, value, source, *args) ⇒ Object



69
70
71
72
73
74
75
76
# File 'lib/reputation_system/evaluation_methods.rb', line 69

def add_or_update_evaluation(reputation_name, value, source, *args)
  srn, evaluation = find_srn_and_evaluation(reputation_name, source, args.first)
  if ReputationSystem::Evaluation.exists? :reputation_name => srn, :source_id => source.id, :source_type => source.class.name, :target_id => self.id, :target_type => self.class.name
    self.update_evaluation(reputation_name, value, source, *args)
  else
    self.add_evaluation(reputation_name, value, source, *args)
  end
end

#decrease_evaluation(reputation_name, value, source, *args) ⇒ Object



96
97
98
# File 'lib/reputation_system/evaluation_methods.rb', line 96

def decrease_evaluation(reputation_name, value, source, *args)
  change_evaluation_value_by(reputation_name, -value, source, *args)
end

#delete_evaluation(reputation_name, source, *args) ⇒ Object



78
79
80
81
82
83
84
85
# File 'lib/reputation_system/evaluation_methods.rb', line 78

def delete_evaluation(reputation_name, source, *args)
  srn, evaluation = find_srn_and_evaluation(reputation_name, source, args.first)
  if evaluation
    !!delete_evaluation_without_validation(srn, evaluation)
  else
    false
  end
end

#delete_evaluation!(reputation_name, source, *args) ⇒ Object



87
88
89
90
# File 'lib/reputation_system/evaluation_methods.rb', line 87

def delete_evaluation!(reputation_name, source, *args)
  srn, evaluation = find_srn_and_evaluation!(reputation_name, source, args.first)
  delete_evaluation_without_validation(srn, evaluation)
end

#evaluators_for(reputation_name, *args) ⇒ Object



43
44
45
46
47
# File 'lib/reputation_system/evaluation_methods.rb', line 43

def evaluators_for(reputation_name, *args)
  scope = args.first
  srn = ReputationSystem::Network.get_scoped_reputation_name(self.class.name, reputation_name, scope)
  self.evaluations.for(srn).includes(:source).map(&:source)
end

#has_evaluation?(reputation_name, source, *args) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
39
40
# File 'lib/reputation_system/evaluation_methods.rb', line 36

def has_evaluation?(reputation_name, source, *args)
  scope = args.first
  srn = ReputationSystem::Network.get_scoped_reputation_name(self.class.name, reputation_name, scope)
  !!ReputationSystem::Evaluation.find_by_reputation_name_and_source_and_target(srn, source, self)
end

#increase_evaluation(reputation_name, value, source, *args) ⇒ Object



92
93
94
# File 'lib/reputation_system/evaluation_methods.rb', line 92

def increase_evaluation(reputation_name, value, source, *args)
  change_evaluation_value_by(reputation_name, value, source, *args)
end

#update_evaluation(reputation_name, value, source, *args) ⇒ Object



58
59
60
61
62
63
64
65
66
67
# File 'lib/reputation_system/evaluation_methods.rb', line 58

def update_evaluation(reputation_name, value, source, *args)
  srn, evaluation = find_srn_and_evaluation!(reputation_name, source, args.first)
  oldValue = evaluation.value
  evaluation.value = value
  evaluation.save!
  process = ReputationSystem::Network.get_reputation_def(self.class.name, srn)[:aggregated_by]
  rep = ReputationSystem::Reputation.find_by_reputation_name_and_target(srn, self)
  newSize = rep.received_messages.size
  ReputationSystem::Reputation.update_reputation_value_with_updated_source(rep, evaluation, oldValue, newSize, 1, process)
end