This commit is contained in:
BoHung Chiu 2021-09-12 20:56:09 +08:00
parent cb46139ca8
commit 42569fd0b7
3 changed files with 30 additions and 10 deletions

View File

@ -10,9 +10,13 @@ class SurveyAnswer
belongs_to :questionnaire_survey
after_create do
if self.questionnaire_survey
answer_group = SurveyAnswerGroup.where(:questionnaire_survey_id=>self.questionnaire_survey.id,:user=>user).first
info = {:questionnaire_survey_id=>self.questionnaire_survey.id,:user=>self.user}
if self.user.blank?
info[:survey_answer_ids] = [self.id]
end
answer_group = SurveyAnswerGroup.where(info).first
if answer_group.nil?
answer_group = SurveyAnswerGroup.new(:questionnaire_survey_id=>self.questionnaire_survey.id,:user=>user_id)
answer_group = SurveyAnswerGroup.new(info)
end
answer_group.last_modified = self.updated_at
answer_group.survey_answer_ids << self.id

View File

@ -33,7 +33,7 @@
<h3><%= @survey.title %></h3>
<div>
<% if @is_answer_list %>
<h4><%=t('survey.taken_by')%>: <%=@user.member_name%></h4>
<h4><%=t('survey.taken_by')%>: <%=@user.member_name rescue "NA" %></h4>
<% else %>
<form id="survey_answer_search">
<div>

View File

@ -6,14 +6,30 @@ Rails.application.routes.draw do
surveys.each do |survey|
group_data = survey.survey_answers.asc(:updated_at).group_by(&:user)
group_data.each do |user_id,survey_answers|
answer_group = SurveyAnswerGroup.where(:questionnaire_survey_id=>survey.id,:user=>user_id).first
if answer_group.nil?
answer_group = SurveyAnswerGroup.new(:questionnaire_survey_id=>survey.id,:user=>user_id)
org_updated_at = survey_answers.map{|a| a.updated_at}
if user_id.blank?
survey_answers.each do |survey_answer|
info = {:questionnaire_survey_id=>survey.id,:user=>user_id,:survey_answer_ids=>[survey_answer.id]}
answer_group = SurveyAnswerGroup.where(info).first
if answer_group.nil?
info.delete(:survey_answer_ids)
answer_group = SurveyAnswerGroup.new(info)
end
answer_group.last_modified = survey_answer.updated_at
answer_group.survey_answer_ids = [survey_answer.id]
answer_group.save
end
else
info = {:questionnaire_survey_id=>survey.id,:user=>user_id}
answer_group = SurveyAnswerGroup.where(info).first
if answer_group.nil?
answer_group = SurveyAnswerGroup.new(info)
end
answer_group.last_modified = survey_answers.last.updated_at
answer_group.survey_answer_ids = survey_answers.map{|a| a.id}
answer_group.save
end
answer_group.last_modified = survey_answers.last.updated_at
answer_group.survey_answer_ids = survey_answers.map{|a| a.id}
answer_group.save
survey_answers.each{|a| a.updated_at = a.created_at;a.save}
survey_answers.each_with_index{|a,i| a.updated_at = org_updated_at[i];a.save}
end
survey.already_fix_data = true
survey.survey_questions.each do |q|