Sha256: 9db4d9e65187c29edb1aa1eba3d45ffbcb4c3057baf5822b8274b5721b21d84d

Contents?: true

Size: 1.45 KB

Versions: 19

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

module Decidim
  module Initiatives
    module Admin
      # A command with all the business logic that creates a new initiative type
      class CreateInitiativeType < Rectify::Command
        # Public: Initializes the command.
        #
        # form - A form object with the params.
        def initialize(form)
          @form = form
        end

        # Executes the command. Broadcasts these events:
        #
        # - :ok when everything is valid.
        # - :invalid if the form wasn't valid and we couldn't proceed.
        #
        # Returns nothing.
        def call
          return broadcast(:invalid) if form.invalid?
          initiative_type = create_initiative_type

          if initiative_type.persisted?
            broadcast(:ok, initiative_type)
          else
            form.errors.add(:banner_image, initiative_type.errors[:banner_image]) if initiative_type.errors.include? :banner_image
            broadcast(:invalid)
          end
        end

        private

        attr_reader :form

        def create_initiative_type
          initiative_type = InitiativesType.new(
            organization: form.current_organization,
            title: form.title,
            description: form.description,
            banner_image: form.banner_image
          )

          return initiative_type unless initiative_type.valid?

          initiative_type.save
          initiative_type
        end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
decidim-initiatives-0.16.1 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.16.0 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.15.2 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.15.1 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.15.0 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.14.4 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.14.3 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.14.2 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.14.1 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.13.1 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.12.2 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.13.0 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.12.1 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.13.0.pre1 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.12.0 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.11.2 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.12.0.pre app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.11.1 app/commands/decidim/initiatives/admin/create_initiative_type.rb
decidim-initiatives-0.11.0.pre1 app/commands/decidim/initiatives/admin/create_initiative_type.rb