Sha256: 05136c78d9bb1d83e54e2c7fd4f7e329364969fd2a0333ea514e4b5cc878f824

Contents?: true

Size: 1.84 KB

Versions: 7

Compression:

Stored size: 1.84 KB

Contents

# frozen_string_literal: true

module Decidim
  module Accountability
    module Admin
      # This command is executed when the user imports a Result from the admin
      # panel using the "Import results from CSV file" feature
      class UpdateImportedResult < Decidim::Commands::UpdateResource
        include Decidim::Accountability::Admin::HasResultCommand

        fetch_form_attributes :scope, :category, :title, :description, :start_date, :end_date, :progress,
                              :decidim_accountability_status_id, :external_id, :weight

        # Initializes an UpdateImportedResult Command.
        #
        # form - The form from which to get the data.
        # result - The current instance of the result to be updated.
        def initialize(form, result, parent_id = nil)
          super(form, result)
          @parent_id = parent_id
        end

        private

        alias result resource

        def run_after_hooks
          link_proposals
          link_meetings
          link_projects
          send_notifications if should_notify_followers?
        end

        def send_notifications
          result.linked_resources(:proposals, "included_proposals").each do |proposal|
            Decidim::EventsManager.publish(
              event: "decidim.events.accountability.result_progress_updated",
              event_class: Decidim::Accountability::ResultProgressUpdatedEvent,
              resource: result,
              affected_users: proposal.notifiable_identities,
              followers: proposal.followers - proposal.notifiable_identities,
              extra: {
                progress: result.progress,
                proposal_id: proposal.id
              }
            )
          end
        end

        def should_notify_followers?
          result.previous_changes["progress"].present?
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
decidim-accountability-0.29.2 app/commands/decidim/accountability/admin/update_imported_result.rb
decidim-accountability-0.29.1 app/commands/decidim/accountability/admin/update_imported_result.rb
decidim-accountability-0.29.0 app/commands/decidim/accountability/admin/update_imported_result.rb
decidim-accountability-0.29.0.rc4 app/commands/decidim/accountability/admin/update_imported_result.rb
decidim-accountability-0.29.0.rc3 app/commands/decidim/accountability/admin/update_imported_result.rb
decidim-accountability-0.29.0.rc2 app/commands/decidim/accountability/admin/update_imported_result.rb
decidim-accountability-0.29.0.rc1 app/commands/decidim/accountability/admin/update_imported_result.rb