Sha256: c9be66e177fcb3128d6c5138c8e14bc03626aae8cf2c1934590e8abeea65acd0

Contents?: true

Size: 1.54 KB

Versions: 6

Compression:

Stored size: 1.54 KB

Contents

# frozen_string_literal: true

module Decidim
  module ReportingProposals
    class AssignProposalValuatorsJob < ApplicationJob
      queue_as :default
      attr_reader :resource

      def perform(data)
        @resource = data[:resource]

        return if valuator_roles.blank?

        unless data[:event_class] == "Decidim::Proposals::Admin::UpdateProposalCategoryEvent"
          return unless data[:extra][:participatory_space]
          return if data[:extra][:type] == "admin"
        end

        valuator_roles.each do |valuator_role|
          Decidim::Proposals::Admin::AssignProposalsToValuator.call(form(valuator_role)) do
            on(:ok) do
              Rails.logger.info("Automatically assigned valuator #{valuator_role.user.name} to proposal ##{resource.id}")
            end
            on(:invalid) do
              Rails.logger.warn("Couldn't automatically assign valuator #{valuator_role.user.name} to proposal ##{resource.id}")
            end
          end
        end
      end

      def form(valuator_role)
        Decidim::Proposals::Admin::ValuationAssignmentForm.from_params(
          id: valuator_role.id,
          proposal_ids: [resource.id]
        ).with_context(
          current_component: resource.component,
          current_user: resource.organization.users.first # first admin for the traceability
        )
      end

      # get valuators from categories
      def valuator_roles
        @valuator_roles ||= category.valuator_roles
      end

      def category
        @category ||= resource.category
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
decidim-reporting_proposals-0.6.0 app/jobs/decidim/reporting_proposals/assign_proposal_valuators_job.rb
decidim-reporting_proposals-0.5.2 app/jobs/decidim/reporting_proposals/assign_proposal_valuators_job.rb
decidim-reporting_proposals-0.5.1 app/jobs/decidim/reporting_proposals/assign_proposal_valuators_job.rb
decidim-reporting_proposals-0.5.0 app/jobs/decidim/reporting_proposals/assign_proposal_valuators_job.rb
decidim-reporting_proposals-0.4.2 app/jobs/decidim/reporting_proposals/assign_proposal_valuators_job.rb
decidim-reporting_proposals-0.2.0 app/jobs/decidim/reporting_proposals/assign_proposal_valuators_job.rb