Sha256: 1be948af8b02c75ca84f463edf2dd02100e628ee719a358610203bdfbffea6a3

Contents?: true

Size: 1.19 KB

Versions: 23

Compression:

Stored size: 1.19 KB

Contents

require_dependency 'flexite/action_service'

module Flexite
  class Entry
    class ArrayCreateService < ActionService
      include InnerProcessable

      def call
        if @form.invalid?
          return failure
        end

        process_entry
      end

      private

      def process_entry
        @record = ArrEntry.create do |record|
          record.parent_id = @form.parent_id
          record.parent_type = @form.parent_type
        end

        Entry.transaction(requires_new: true) do
          create_entries(@form.new_entries)
        end

        if @process_result.succeed?
          @process_result.options[:data] = @record
        end

        process_result('Entry was created')
      end

      def create_entries(new_entries)
        return if new_entries.blank?

        new_entries.each do |_, entry|
          entry[:parent_id] = @record.id
          entry[:parent_type] = @form.type.constantize.base_class.sti_name
          save_entry(entry)
        end
      end

      def save_entry(entry)
        call_service_for(:create, entry)
      end

      protected

      def failure
        save_errors
        Result.new(success: false, endpoint: { status: 400 })
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
flexite-0.0.25 app/services/flexite/entry/array_create_service.rb
flexite-0.0.24 app/services/flexite/entry/array_create_service.rb
flexite-0.0.23 app/services/flexite/entry/array_create_service.rb
flexite-0.0.22 app/services/flexite/entry/array_create_service.rb
flexite-0.0.21 app/services/flexite/entry/array_create_service.rb
flexite-0.0.20 app/services/flexite/entry/array_create_service.rb
flexite-0.0.19 app/services/flexite/entry/array_create_service.rb
flexite-0.0.18 app/services/flexite/entry/array_create_service.rb
flexite-0.0.17 app/services/flexite/entry/array_create_service.rb
flexite-0.0.16 app/services/flexite/entry/array_create_service.rb
flexite-0.0.15 app/services/flexite/entry/array_create_service.rb
flexite-0.0.14 app/services/flexite/entry/array_create_service.rb
flexite-0.0.13 app/services/flexite/entry/array_create_service.rb
flexite-0.0.12 app/services/flexite/entry/array_create_service.rb
flexite-0.0.11 app/services/flexite/entry/array_create_service.rb
flexite-0.0.10 app/services/flexite/entry/array_create_service.rb
flexite-0.0.9 app/services/flexite/entry/array_create_service.rb
flexite-0.0.8 app/services/flexite/entry/array_create_service.rb
flexite-0.0.7 app/services/flexite/entry/array_create_service.rb
flexite-0.0.6 app/services/flexite/entry/array_create_service.rb