Class: Product::Survey::Result

Inherits:
Result
  • Object
show all
Defined in:
app/models/product/survey/result.rb

Instance Method Summary collapse

Instance Method Details

#increment_chosen_count_of_optionObject



7
8
9
10
11
12
13
14
15
16
# File 'app/models/product/survey/result.rb', line 7

def increment_chosen_count_of_option
  if task.answer_type == 'Checkboxes'
    task.options.where(_id: { '$in' => JSON.parse(text) }).each do |option|
      option.update_attribute(:chosen_count, option.chosen_count.to_i + 1)
    end
  else
    option = task.options.where(_id: text).first
    option.update_attribute(:chosen_count, option.chosen_count.to_i + 1)
  end
end

#update_chosen_count_of_optionsObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/models/product/survey/result.rb', line 18

def update_chosen_count_of_options
  if task.answer_type == 'Checkboxes'
    option_ids = JSON.parse(text)
    option_ids_was_array = JSON.parse(text_was)
    
    options = task.options.where(_id: { '$in' => (option_ids + option_ids_was_array).uniq }).index_by{|o| o.id.to_s}
    
    option_ids_was_array.select{|id| !option_ids.include?(id) }.each do |option_id_was|
      option = options[option_id_was]
      option.update_attribute(:chosen_count, option.chosen_count.to_i - 1)
    end
    
    option_ids.select{|id| !option_ids_was_array.include?(id) }.each do |option_id|
      option = options[option_id]
      option.update_attribute(:chosen_count, option.chosen_count.to_i + 1)
    end
  else
    option = task.options.where(_id: text).first
    option.update_attribute(:chosen_count, option.chosen_count.to_i + 1)
    
    option = task.options.where(_id: text_was).first
    option.update_attribute(:chosen_count, option.chosen_count.to_i - 1)
  end
end