Sha256: 3ec446307bf5f875e8130ed405ae5b47d69fcbf66f8ad7848ac83444935fe707

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

module Decidim
  module Lausanne
    module Budgets
      module Admin
        class ProposalsImportsController < Admin::ApplicationController
          helper_method :budget

          def new
            enforce_permission_to :import_proposals, :projects

            @form = form(Admin::ProjectImportProposalsForm).instance
            @form.context.budget = budget
          end

          def create
            enforce_permission_to :import_proposals, :projects

            @form = form(Admin::ProjectImportProposalsForm).from_params(params, budget: budget)
            Admin::ImportProposalsToBudgets.call(@form) do
              on(:ok) do |projects|
                flash[:notice] = I18n.t("proposals_imports.create.success", scope: "decidim.lausanne_budgets.admin", number: projects.length)
                redirect_to lausanne_budget_projects_path(lausanne_budget: budget)
              end

              on(:invalid) do
                flash[:alert] = I18n.t("proposals_imports.create.invalid", scope: "decidim.lausanne_budgets.admin")
                render action: "new"
              end
            end
          end

          private

            def budget
              @budget ||= LausanneBudget.where(component: current_component).find_by(id: params[:lausanne_budget])
            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/controllers/decidim/lausanne/budgets/admin/proposals_imports_controller.rb