class Decidim::Meetings::Admin::MeetingsPollController

def after_update_url

def after_update_url
  edit_meeting_poll_path(meeting_id: meeting.id)
end

def answer_options

def answer_options
  respond_to do |format|
    format.json do
      question_id = params["id"]
      question = Decidim::Meetings::Question.find_by(id: question_id)
      render json: question.answer_options.map { |answer_option| AnswerOptionPresenter.new(answer_option).as_json } if question.present?
    end
  end
end

def answer_options_url(params)

for the question with id = params[:id]
Returns the url to get the answer options json (for the display conditions form)
def answer_options_url(params)
  url_for([questionnaire.questionnaire_for, { action: :answer_options, format: :json, **params }])
end

def blank_answer_option

def blank_answer_option
  @blank_answer_option ||= Decidim::Meetings::Admin::AnswerOptionForm.new
end

def blank_question

def blank_question
  @blank_question ||= Decidim::Meetings::Admin::QuestionForm.new
end

def edit

def edit
  enforce_permission_to :update, :poll, meeting: meeting, poll: poll
  @form = form(Admin::QuestionnaireForm).from_model(questionnaire)
  render template: "decidim/meetings/admin/poll/edit"
end

def edit_questionnaire_title

of the edit form.
Implement this method in your controller to set the title
def edit_questionnaire_title
  t(:title, scope: "decidim.meetings.admin.meetings_poll.form", questionnaire_for: translated_attribute(meeting.try(:title)))
end

def meeting

def meeting
  @meeting ||= Meeting.where(component: current_component).find(params[:meeting_id])
end

def poll

def poll
  @poll ||= Poll.find_or_initialize_by(meeting: meeting)
end

def question_types

def question_types
  @question_types ||= Decidim::Meetings::Poll::QUESTION_TYPES.map do |question_type|
    [question_type, I18n.t("decidim.forms.question_types.#{question_type}")]
  end
end

def questionnaire

def questionnaire
  @questionnaire ||= Decidim::Meetings::Questionnaire.find_or_initialize_by(questionnaire_for: questionnaire_for)
end

def questionnaire_for

def questionnaire_for
  poll
end

def update

def update
  enforce_permission_to :update, :poll, meeting: meeting, poll: poll
  @form = form(Admin::QuestionnaireForm).from_params(params)
  Admin::UpdateQuestionnaire.call(@form, questionnaire) do
    on(:ok) do
      # i18n-tasks-use t("decidim.forms.admin.questionnaires.update.success")
      flash[:notice] = I18n.t("update.success", scope: "decidim.meetings.admin.meetings_poll")
      redirect_to after_update_url
    end
    on(:invalid) do
      # i18n-tasks-use t("decidim.forms.admin.questionnaires.update.invalid")
      flash.now[:alert] = I18n.t("update.invalid", scope: "decidim.meetings.admin.meetings_poll")
      render template: "decidim/meetings/admin/poll/edit"
    end
  end
end

def update_url

def update_url
  meeting_poll_path(meeting_id: meeting.id)
end