17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'app/models/product/survey/page.rb', line 17
def set_results(params, user)
working_tasks = tasks.index_by{|t| t.id.to_s }
results = Product::Survey::Result.where(task_id: { '$in' => tasks.map(&:id) }, user_id: user.id).index_by{|r| r.task_id.to_s }
errors = {}
params.each do |task_id, result_form|
result = if result_form['id'].present? && results[task_id].try(:user_id) == user.id
results[task_id]
else
value = Product::Survey::Result.new(task_id: task_id)
value.user_id = user.id
value
end
text = working_tasks[task_id].answer_type == 'Checkboxes' ? result_form['text'].to_json : result_form['text']
result.update_attributes text: text
results[result.task_id.to_s] = result
unless result.valid?
errors[task_id] ||= []
result.errors.full_messages.each {|message| errors[task_id] << message }
end
end
working_tasks.each do |task_id, task|
next if params.has_key? task_id
errors[task_id] ||= []
errors[task_id] << I18n.t('errors.messages.blank')
end
[results, errors]
end
|