error fix
This commit is contained in:
parent
9b96f2eeb0
commit
4a736cc92c
|
@ -111,105 +111,118 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController
|
||||||
|
|
||||||
@survey_answers.destroy
|
@survey_answers.destroy
|
||||||
|
|
||||||
# End of speadsheet
|
# Start and end of speadsheet
|
||||||
@end_row = @spreadsheet.count
|
@end_row = @spreadsheet.count
|
||||||
|
|
||||||
# Modify multiline options if changed
|
@max_row_start = 0
|
||||||
@survey_questions.each_with_index do |question, index|
|
@survey_questions.each do |question|
|
||||||
case question.type
|
case question.type
|
||||||
|
when ::SurveyQuestion::Radio, ::SurveyQuestion::Select, ::SurveyQuestion::Check
|
||||||
|
if question.survey_question_options.count > @max_row_start
|
||||||
|
@max_row_start = question.survey_question_options.count
|
||||||
|
end
|
||||||
|
when ::SurveyQuestion::Radiogroup
|
||||||
|
if question.survey_question_options.count * question.survey_question_radiogroups.count > @max_row_start
|
||||||
|
@max_row_start = question.survey_question_options.count * question.survey_question_radiogroups.count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@start_row = @max_row_start + 2
|
||||||
|
|
||||||
when ::SurveyQuestion::Radio, ::SurveyQuestion::Select
|
# Modify multiline options if changed
|
||||||
((question.survey_question_options.count + 2)..@end_row).each do |row|
|
(@start_row..@end_row).each do |row|
|
||||||
@answer_model = @survey.survey_answers.new
|
@answer_model = @survey.survey_answers.new
|
||||||
|
@survey_questions.each_with_index do |question, index|
|
||||||
|
case question.type
|
||||||
|
|
||||||
|
when ::SurveyQuestion::Radio, ::SurveyQuestion::Select
|
||||||
if !@spreadsheet.row(row)[index*2].nil? && @spreadsheet.row(row)[index*2] != " "
|
if !@spreadsheet.row(row)[index*2].nil? && @spreadsheet.row(row)[index*2] != " "
|
||||||
@answer_model[question.id.to_s] = @spreadsheet.row(row)[index*2]
|
@answer_model[question.id.to_s] = @spreadsheet.row(row)[index*2]
|
||||||
@answer_model.save!
|
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
when ::SurveyQuestion::Check
|
when ::SurveyQuestion::Check
|
||||||
((question.survey_question_options.count + 2)..@end_row).each do |row|
|
|
||||||
@answer_model = @survey.survey_answers.new
|
|
||||||
if !@spreadsheet.row(row)[index*2].nil?
|
if !@spreadsheet.row(row)[index*2].nil?
|
||||||
@answer_model[question.id.to_s] = @spreadsheet.row(row)[index*2].split("\"").select.each_with_index { |str, i| i.odd? }
|
@answer_model[question.id.to_s] = @spreadsheet.row(row)[index*2].split("\"").select.each_with_index { |str, i| i.odd? }
|
||||||
@answer_model.save!
|
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
when ::SurveyQuestion::Radiogroup
|
when ::SurveyQuestion::Radiogroup
|
||||||
radio_groups = []
|
radio_groups = []
|
||||||
spreadsheet_radiogroups_lines =
|
spreadsheet_radiogroups_lines =
|
||||||
question.survey_question_options.count * question.survey_question_radiogroups.count + 2
|
question.survey_question_options.count * question.survey_question_radiogroups.count + 2
|
||||||
|
|
||||||
# Grab each radiogroups line for update
|
# Grab each radiogroups line for update
|
||||||
(2...spreadsheet_radiogroups_lines).each do |line|
|
(2...spreadsheet_radiogroups_lines).each do |line|
|
||||||
radio_groups << @spreadsheet.row(line)[index * 2]
|
radio_groups << @spreadsheet.row(line)[index * 2]
|
||||||
end
|
|
||||||
|
|
||||||
# Grab answers info
|
|
||||||
answers = []
|
|
||||||
(spreadsheet_radiogroups_lines..@spreadsheet.last_row).each do |line|
|
|
||||||
|
|
||||||
if not @spreadsheet.row(line)[index * 2].blank?
|
|
||||||
answers << eval(@spreadsheet.row(line)[index * 2])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Save the answers
|
|
||||||
answers.each do |answer|
|
|
||||||
options = Hash[question.survey_question_options.collect { |o| [ o.id.to_s, o.name ] }]
|
|
||||||
@answer_model = @survey.survey_answers.new
|
|
||||||
@answer_model[question.id.to_s] = {}
|
|
||||||
|
|
||||||
answer.each do |option, value|
|
|
||||||
@answer_model[question.id.to_s][options.invert[option]] = value
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@answer_model.save!
|
# Grab answers info
|
||||||
end
|
answers = []
|
||||||
|
(spreadsheet_radiogroups_lines..@spreadsheet.last_row).each do |line|
|
||||||
|
|
||||||
# Parse the needed info in the array
|
if not @spreadsheet.row(line)[index * 2].blank?
|
||||||
radio_titles = []
|
answers << eval(@spreadsheet.row(line)[index * 2])
|
||||||
radio_options = []
|
|
||||||
radio_groups.each do |group|
|
|
||||||
option_with_radio = group.split(' - ')
|
|
||||||
radio_titles << option_with_radio[0]
|
|
||||||
radio_options << option_with_radio[1]
|
|
||||||
end
|
|
||||||
|
|
||||||
# Update the spreadsheet info to the DB
|
|
||||||
groups_of_options = []
|
|
||||||
groups_of_radios = []
|
|
||||||
radio_titles.each_slice(question.survey_question_radiogroups.count) do |options|
|
|
||||||
groups_of_options << options
|
|
||||||
end
|
|
||||||
|
|
||||||
radio_options.each_slice(question.survey_question_radiogroups.count) do |options|
|
|
||||||
groups_of_radios << options
|
|
||||||
end
|
|
||||||
|
|
||||||
# Update option names
|
|
||||||
question.survey_question_options.each_with_index do |option, index|
|
|
||||||
groups_of_options[index].each do |modified_option|
|
|
||||||
if option.name_translations["zh_tw"] != modified_option
|
|
||||||
option.update_attributes(name: modified_option)
|
|
||||||
break
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
# Update radio names
|
# Save the answers
|
||||||
question.survey_question_radiogroups.each_with_index do |option, index|
|
answers.each do |answer|
|
||||||
groups_of_radios.each do |radios|
|
options = Hash[question.survey_question_options.collect { |o| [ o.id.to_s, o.name ] }]
|
||||||
if radios[index] != option.name_translations["zh_tw"]
|
# @answer_model = @survey.survey_answers.new
|
||||||
option.update_attributes(name: radios[index])
|
@answer_model[question.id.to_s] = {}
|
||||||
break
|
|
||||||
|
answer.each do |option, value|
|
||||||
|
@answer_model[question.id.to_s][options.invert[option]] = value
|
||||||
|
end
|
||||||
|
|
||||||
|
# @answer_model.save!
|
||||||
|
end
|
||||||
|
|
||||||
|
# Parse the needed info in the array
|
||||||
|
radio_titles = []
|
||||||
|
radio_options = []
|
||||||
|
radio_groups.each do |group|
|
||||||
|
option_with_radio = group.split(' - ')
|
||||||
|
radio_titles << option_with_radio[0]
|
||||||
|
radio_options << option_with_radio[1]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Update the spreadsheet info to the DB
|
||||||
|
groups_of_options = []
|
||||||
|
groups_of_radios = []
|
||||||
|
radio_titles.each_slice(question.survey_question_radiogroups.count) do |options|
|
||||||
|
groups_of_options << options
|
||||||
|
end
|
||||||
|
|
||||||
|
radio_options.each_slice(question.survey_question_radiogroups.count) do |options|
|
||||||
|
groups_of_radios << options
|
||||||
|
end
|
||||||
|
|
||||||
|
# Update option names
|
||||||
|
question.survey_question_options.each_with_index do |option, index|
|
||||||
|
groups_of_options[index].each do |modified_option|
|
||||||
|
if option.name_translations["zh_tw"] != modified_option
|
||||||
|
option.update_attributes(name: modified_option)
|
||||||
|
break
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
|
# Update radio names
|
||||||
|
question.survey_question_radiogroups.each_with_index do |option, index|
|
||||||
|
groups_of_radios.each do |radios|
|
||||||
|
if radios[index] != option.name_translations["zh_tw"]
|
||||||
|
option.update_attributes(name: radios[index])
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
@answer_model.save!
|
||||||
|
|
||||||
|
end #end row
|
||||||
|
|
||||||
# @start_row = 2
|
# @start_row = 2
|
||||||
# @survey.survey_answers.destroy
|
# @survey.survey_answers.destroy
|
||||||
|
|
Loading…
Reference in New Issue