Sha256: d95bb26ed0037dca015264ecd7188902da14de24c75268734e454445e5a56150

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

module Decidim
  module Lausanne
    module Budgets
      module Admin
        # This command is executed when the user creates an Budget
        # from the admin panel.
        class CreateBudget < Decidim::Lausanne::Budgets::Command
          def initialize(form)
            @form = form
          end

          # Creates the budget if valid.
          #
          # Broadcasts :ok if successful, :invalid otherwise.
          def call
            return broadcast(:invalid) if form.invalid?

            create_budget!

            broadcast(:ok, budget)
          end

          private

            attr_reader :form, :budget

            def create_budget!
              attributes = {
                component: form.current_component,
                scope: form.scope,
                title: form.title,
                weight: form.weight,
                description: form.description,
                total_budget: form.total_budget
              }

              @budget = Decidim.traceability.create!(
                LausanneBudget,
                form.current_user,
                attributes,
                visibility: "all"
              )
            end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
decidim-lausanne-budgets-0.1.0 app/commands/decidim/lausanne/budgets/admin/create_budget.rb