Class: Decidim::Proposals::Admin::ProposalAnswersController
- Inherits:
-
ApplicationController
- Object
- DecidimController
- Admin::ApplicationController
- Admin::Components::BaseController
- ApplicationController
- Decidim::Proposals::Admin::ProposalAnswersController
- Includes:
- ActionView::Helpers::SanitizeHelper, Filterable, NeedsInterpolations
- Defined in:
- decidim-proposals/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb
Overview
This controller allows admins to answer proposals in a participatory process.
Instance Method Summary collapse
Methods inherited from Admin::Components::BaseController
#current_component, #current_participatory_space, #parent_path, #permission_class_chain, #permission_scope, #permissions_context, #set_component_breadcrumb_item
Methods included from RegistersPermissions
Methods inherited from Admin::ApplicationController
#permission_class_chain, #permission_scope, #user_has_no_permission_path, #user_not_authorized_path
Methods included from Headers::HttpCachingDisabler
Methods included from TranslatableAttributes
#attachment?, #default_locale?
Methods included from NeedsSnippets
Methods included from NeedsOrganization
enhance_controller, extended, included
Instance Method Details
#edit ⇒ Object
19 20 21 22 |
# File 'decidim-proposals/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb', line 19 def edit (:create, :proposal_answer, proposal:) @form = form(ProposalAnswerForm).from_model(proposal) end |
#update ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'decidim-proposals/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb', line 24 def update (:create, :proposal_answer, proposal:) @notes_form = form(ProposalNoteForm).instance @answer_form = form(ProposalAnswerForm).from_params(params) Admin::AnswerProposal.call(@answer_form, proposal) do on(:ok) do flash[:notice] = I18n.t("proposals.answer.success", scope: "decidim.proposals.admin") redirect_to proposals_path end on(:invalid) do flash.keep[:alert] = I18n.t("proposals.answer.invalid", scope: "decidim.proposals.admin") render template: "decidim/proposals/admin/proposals/show" end end end |
#update_multiple_answers ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'decidim-proposals/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb', line 42 def update_multiple_answers valid_proposals = [] failed_proposals = [] proposals.each do |proposal| proposal_answer_form = answer_form(proposal) if allowed_to?(:create, :proposal_answer, proposal:) && proposal_answer_form.valid? && !proposal.emendation? valid_proposals << proposal.id ProposalAnswerJob.perform_later(proposal, proposal_answer_form.attributes, { current_organization:, current_component:, current_user: }) else failed_proposals << proposal.id end end if failed_proposals.any? flash[:alert] = t("proposals.answer.bulk_answer_error", scope: "decidim.proposals.admin", template: (translated_attribute(template&.name)), proposals: failed_proposals.join(", ")) end if valid_proposals.any? flash[:notice] = I18n.t("proposals.answer.bulk_answer_success", scope: "decidim.proposals.admin", template: (translated_attribute(template&.name)), count: valid_proposals.count) end redirect_to EngineRouter.admin_proxy(current_component).root_path end |