Sha256: 9523d44d8643e3763de3eb9f30cb32ea404c5e280b3f2ad52c05da177fc3a768
Contents?: true
Size: 1.71 KB
Versions: 46
Compression:
Stored size: 1.71 KB
Contents
# frozen_string_literal: true module Decidim module Proposals # A command with all the business logic when a user updates a collaborative_draft. class UpdateCollaborativeDraft < Rectify::Command include HashtagsMethods # Public: Initializes the command. # # form - A form object with the params. # current_user - The current user. # collaborative_draft - the collaborative_draft to update. def initialize(form, current_user, collaborative_draft) @form = form @current_user = current_user @collaborative_draft = collaborative_draft end # Executes the command. Broadcasts these events: # # - :ok when everything is valid, together with the collaborative_draft. # - :invalid if the form wasn't valid and we couldn't proceed. # # Returns nothing. def call return broadcast(:invalid) if form.invalid? return broadcast(:invalid) unless collaborative_draft.editable_by?(current_user) transaction do update_collaborative_draft end broadcast(:ok, collaborative_draft) end private attr_reader :form, :collaborative_draft, :current_user def update_collaborative_draft Decidim.traceability.update!( @collaborative_draft, @current_user, attributes, visibility: "public-only" ) end def attributes { title: title_with_hashtags, body: body_with_hashtags, category: form.category, scope: form.scope, address: form.address, latitude: form.latitude, longitude: form.longitude } end end end end
Version data entries
46 entries across 46 versions & 1 rubygems