From dec608785071d5f70cece014a975753eca3f27b3 Mon Sep 17 00:00:00 2001 From: thomaschen <99703040@nccu.edu.tw> Date: Mon, 21 Oct 2013 16:15:06 +0800 Subject: [PATCH] import radio question success --- Gemfile | 2 +- .../survey/back_end/surveys_controller.rb | 25 ++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 3cfa8c2d0..ce0eae95d 100644 --- a/Gemfile +++ b/Gemfile @@ -29,7 +29,7 @@ gem 'mongoid-tree', :require => 'mongoid/tree' gem "mongo_session_store-rails3", '3.0.6' gem 'nokogiri' -# export csv +# import csv gem 'roo' gem 'fb_graph' diff --git a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb index 28feddc20..15a20af6d 100644 --- a/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb +++ b/vendor/built_in_modules/survey/app/controllers/panel/survey/back_end/surveys_controller.rb @@ -94,7 +94,8 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController def import @survey = ::Survey.find(params[:id]) @file = params[:file] - + @chart_data, @survey_questions, @survey_answers = @survey.generate_chart_data + case File.extname(@file.original_filename) when ".csv" then @spreadsheet = Roo::CSV.new(@file.path) # when ".xls" then Excel.new(file.path, nil, :ignore) @@ -102,9 +103,27 @@ class Panel::Survey::BackEnd::SurveysController < OrbitBackendController else raise "Unknown file type: #{file.original_filename}" end + @current_row = 2 @header = @spreadsheet.row(1) - (2..@spreadsheet.last_row).each do |i| - ##parse each row here + + # (2..@spreadsheet.last_row).each do |i| + # parse each row here + # end + + @survey.survey_answers.destroy + @survey_questions.each do |question| + case question.type + when ::SurveyQuestion::Radio, ::SurveyQuestion::Select + (@current_row..(@current_row + question.survey_question_options.count - 1)).each do |i| + (1..@spreadsheet.row(i)[1].to_i).each do + @answer_model = @survey.survey_answers.new + @answer_model[question.id.to_s] = @spreadsheet.row(i)[0] + @answer_model.save! + end + end + @current_row = @current_row + question.survey_question_options.count - 1 + else + end end redirect_to panel_survey_back_end_surveys_url, :notice => :success