Class: Decidim::Proposals::CreateProposalType
- Inherits:
-
Api::Types::BaseMutation
- Object
- Api::Types::BaseMutation
- Decidim::Proposals::CreateProposalType
- Defined in:
- lib/decidim/api/mutations/create_proposal_type.rb
Instance Method Summary collapse
- #authorized?(attributes:, locale:, toggle_translations:) ⇒ Boolean
- #resolve(attributes:, locale:, toggle_translations:) ⇒ Object
Instance Method Details
#authorized?(attributes:, locale:, toggle_translations:) ⇒ Boolean
43 44 45 46 47 48 49 |
# File 'lib/decidim/api/mutations/create_proposal_type.rb', line 43 def (attributes:, locale:, toggle_translations:) unless super && allowed_to?(:create, :proposal, Decidim::Proposals::Proposal.new(component: current_component), { current_user:, current_component: }) raise Decidim::Api::Errors::MutationNotAuthorizedError, I18n.t("decidim.api.errors.unauthorized_mutation") end true end |
#resolve(attributes:, locale:, toggle_translations:) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/decidim/api/mutations/create_proposal_type.rb', line 15 def resolve(attributes:, locale:, toggle_translations:) set_locale(locale:, toggle_translations:) params = attributes.to_h.slice(:title, :body, :address, :latitude, :longitude, :taxonomies) params[:taxonomies] = Decidim::Taxonomy.where(organization: current_organization, id: params[:taxonomies]).pluck(:id) if params[:taxonomies] form = form(Decidim::Proposals::ProposalForm).from_params(params) Decidim::Proposals::CreateProposal.call(form, current_user) do on(:ok) do |proposal| Decidim::Proposals::PublishProposal.call(proposal, current_user) do on(:ok) do return proposal.reload end on(:invalid) do raise Decidim::Api::Errors::ValidationError, I18n.t("proposals.publish.error", scope: "decidim") end end end on(:invalid) do raise Decidim::Api::Errors::AttributeValidationError, form.errors end end end |