orbit-survey_b/app/controllers/panel/survey_b/front_end/survey_b_controller.rb

88 lines
2.7 KiB
Ruby

class Panel::SurveyB::FrontEnd::SurveyBController < OrbitWidgetController
helper ApplicationHelper
def index
if params[:period].nil?
@period = SurveyBPeriod.get_current_survey()
else
@period = SurveyBPeriod.find(params[:period])
end
redirect_standalone panel_survey_b_front_end_survey_b_index_path( :standalone => 'true') do
@setting = SurveyBSetting.first_or_create
if params[:agree] == '1'
# @period = SurveyBPeriod.first
render :index, :layout => 'standalone'
else
# Escape from error when announcement is empty
if @setting.announcement.nil?
@setting.announcement = " "
end
render :announcement, :layout => 'standalone'
end
end
end
def create
answer = params[:answer]
@answer_model = ::SurveyBAnswer.new
not_answered = true
[:contact_name, :contact_phone, :contact_e_mail, :person_question, :rate_question, :quality_question].each do |item|
if answer[item].blank?
@answer_model.errors.add t("survey_b.#{item.to_s}_label"), t('survey_b.not_answered')
else
@answer_model[item] = answer[item]
end
end
@answer_model[:comment_question] = answer[:comment_question]
[:good_institutions, :bad_institutions].each do |item|
t('survey_b.institutions').each do |i_key, institution|
if answer[item][i_key] == '1'
@answer_model[item] ||= []
@answer_model[item].push i_key
end
end
end
t('survey_b.institutions').each do |i_key, institution|
if answer["institution_check"][i_key] == '1'
not_answered = false
@answer_model[i_key] ||= {}
t('survey_b.questions').each do |q_key, question|
if answer[i_key] && answer[i_key][q_key]
@answer_model[i_key][q_key] = answer[i_key][q_key]
else
@answer_model.errors.add institution + question, t('survey_b.not_answered')
end
end
end
end
if not_answered
@answer_model.errors.add t('survey_b.institution_check_label'), t('survey_b.not_answered')
end
if @answer_model.errors.empty?
@answer_model.save!
render :answer_success
else
@answer_error = @answer_model.errors.full_messages.join(',')
render :answer_error
end
end
def redirect_standalone url
unless params[:standalone] == 'true'
@redirect_url = url
render :redirect_standalone
else
module_app = ModuleApp.first(:conditions => {:key => 'survey_b'})
@item = Item.where(module_app_id: module_app.id).first
if @period
yield
else
# render :no_survey
# render :json => "No Survey"
render :no_survey, :layout => 'standalone'
end
end
end
end