Sha256: ac96ed2fd775f4a987f026a5aa13a0821e6ae8737964461d3a2b102b2a1f271d

Contents?: true

Size: 1.56 KB

Versions: 17

Compression:

Stored size: 1.56 KB

Contents

module Ecm::Cms
  class CreateNavigationService < Itsf::Services::V2::Service::Base
    class Response < Itsf::Services::V2::Response::Base
      attr_accessor :navigation, :navigation_items, :created_navigation_items, :errored_navigation_items

      def initialize
        super
        @navigation_items          = []
        @created_navigation_items  = []
        @errrored_navigation_items = []
      end
    end

    attr_accessor :locale, :name, :items_attributes

    validates :locale, :name, :items_attributes, presence: true

    def do_work
      info "Running on environment #{Rails.env}"
      return response unless valid?
      @navigation = build_navigation
      @navigation_items = build_navigation_items
      @navigation_items.collect do |navigation_item|
        if navigation_item.save
          info "Created #{navigation_item}", indent: 1
          response.created_navigation_items << navigation_item
        else
          add_error_and_say :base, "Error creating #{navigation_item}. Errors: #{navigation_item.errors.full_messages.to_sentence}", indent: 1
          response.errored_navigation_items << navigation_item
        end
      end
      response.navigation = @navigation
      response.navigation_items = @navigation_items
      info 'Done'
      return response
    end

    private

    def build_navigation
      Navigation.new(locale: locale, name: name)
    end

    def build_navigation_items
      @items_attributes.collect do |item_attributes|
        NavigationItem.new(item_attributes.merge(ecm_cms_navigation: @navigation))
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
ecm_cms2-5.1.2 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-5.1.1 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-5.1.0 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-5.0.0 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-4.1.1 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-4.1.0 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-4.0.1 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-4.0.0 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-3.0.3 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-3.0.2 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-3.0.1 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-3.0.0 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-2.1.4 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-2.1.3 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-2.1.2 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-2.1.1 app/services/ecm/cms/create_navigation_service.rb
ecm_cms2-2.1.0 app/services/ecm/cms/create_navigation_service.rb