Class: Decidim::Challenges::Admin::SurveysController
- Inherits:
-
ApplicationController
- Object
- Admin::Components::BaseController
- ApplicationController
- Decidim::Challenges::Admin::SurveysController
- Includes:
- Forms::Admin::Concerns::HasQuestionnaire, Forms::Admin::Concerns::HasQuestionnaireAnswers
- Defined in:
- app/controllers/decidim/challenges/admin/surveys_controller.rb
Overview
This controller allows an admin to manage surveys from a challenge
Instance Method Summary collapse
- #edit ⇒ Object
- #export ⇒ Object
- #export_response ⇒ Object
- #index ⇒ Object
- #public_url ⇒ Object
- #questionnaire_export_response_url(session_token) ⇒ Object
- #questionnaire_for ⇒ Object
- #questionnaire_participant_answers_url(session_token) ⇒ Object
- #questionnaire_participants_url ⇒ Object
- #show ⇒ Object
- #update ⇒ Object
Instance Method Details
#edit ⇒ Object
25 26 27 28 29 |
# File 'app/controllers/decidim/challenges/admin/surveys_controller.rb', line 25 def edit (:edit, :challenge, challenge:) @form = ChallengeSurveysForm.from_model(challenge) end |
#export ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'app/controllers/decidim/challenges/admin/surveys_controller.rb', line 49 def export (:export_surveys, :challenge, challenge:) ExportChallengeSurveys.call(challenge, params[:format], current_user) do on(:ok) do |export_data| send_data export_data.read, type: "text/#{export_data.extension}", filename: export_data.filename("registrations") end end end |
#export_response ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'app/controllers/decidim/challenges/admin/surveys_controller.rb', line 59 def export_response :export_answers, :questionnaire session_token = params[:session_token] answers = Decidim::Forms::QuestionnaireUserAnswers.for(questionnaire) title = t("export_response.title", scope: i18n_scope, token: session_token) Decidim::Forms::ExportQuestionnaireAnswersJob.perform_later(current_user, title, answers.select { |a| a.first.session_token == session_token }) flash[:notice] = t("decidim.admin.exports.notice") redirect_back(fallback_location: questionnaire_participant_answers_url(session_token)) end |
#index ⇒ Object
11 12 13 14 15 16 17 |
# File 'app/controllers/decidim/challenges/admin/surveys_controller.rb', line 11 def index :index, :questionnaire_answers @query = paginate(collection) @participants = participants(@query) @total = participants_query.count_participants end |
#public_url ⇒ Object
88 89 90 |
# File 'app/controllers/decidim/challenges/admin/surveys_controller.rb', line 88 def public_url Decidim::EngineRouter.main_proxy(current_component).answer_challenge_survey_path(challenge.id) end |
#questionnaire_export_response_url(session_token) ⇒ Object
80 81 82 |
# File 'app/controllers/decidim/challenges/admin/surveys_controller.rb', line 80 def questionnaire_export_response_url(session_token) export_response_challenge_surveys_url(session_token:, format: "pdf") end |
#questionnaire_for ⇒ Object
84 85 86 |
# File 'app/controllers/decidim/challenges/admin/surveys_controller.rb', line 84 def questionnaire_for challenge end |
#questionnaire_participant_answers_url(session_token) ⇒ Object
76 77 78 |
# File 'app/controllers/decidim/challenges/admin/surveys_controller.rb', line 76 def questionnaire_participant_answers_url(session_token) show_answers_challenge_surveys_url(session_token:) end |
#questionnaire_participants_url ⇒ Object
72 73 74 |
# File 'app/controllers/decidim/challenges/admin/surveys_controller.rb', line 72 def questionnaire_participants_url index_answers_challenge_surveys_path end |
#show ⇒ Object
19 20 21 22 23 |
# File 'app/controllers/decidim/challenges/admin/surveys_controller.rb', line 19 def show :show, :questionnaire_answers @participant = participant(participants_query.participant(params[:session_token])) end |
#update ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'app/controllers/decidim/challenges/admin/surveys_controller.rb', line 31 def update (:edit, :challenge, challenge:) @form = ChallengeSurveysForm.from_params(params).with_context(current_organization: challenge.organization, challenge:) UpdateSurveys.call(@form, challenge) do on(:ok) do flash[:notice] = I18n.t("surveys.update.success", scope: "decidim.challenges.admin") redirect_to challenges_path end on(:invalid) do flash.now[:alert] = I18n.t("surveys.update.invalid", scope: "decidim.challenges.admin") render action: "edit" end end end |