Sha256: 5d300f9424917652213bb27a3475aea9e27c10879c71bd68d29a6981a300094c

Contents?: true

Size: 1.46 KB

Versions: 29

Compression:

Stored size: 1.46 KB

Contents

module Spree
  module Api
    module V2
      module Platform
        module NestedSetRepositionConcern
          def reposition
            spree_authorize! :update, resource if spree_current_user.present?

            @new_parent = scope.find(permitted_resource_params[:new_parent_id])
            new_index = permitted_resource_params[:new_position_idx].to_i

            if resource.move_to_child_with_index(@new_parent, new_index)
              # If successful reposition call the custom method for handling success.
              successful_reposition_actions
            elsif resource.errors.any?
              # If there are errors output them to the response
              render_error_payload(resource.errors.full_messages.to_sentence)
            else
              # If the user drops the re-positioned item in the same location it came from
              # we just render the serialized payload, nothing has changed, we don't need to
              # render any errors, or fire any custom success methods.
              render_serialized_payload { serialize_resource(resource) }
            end
          end

          private

          def successful_reposition_actions
            # Call a separate method for a successful reposition so this can be easily overridden
            # if a more complex set of events need to occur after a successful reposition.
            render_serialized_payload { serialize_resource(resource) }
          end
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 3 rubygems

Version Path
spree_api-4.10.1 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.10.0 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.9.0 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.8.3 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.8.2 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.7.3 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.6.6 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.5.5 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.4.1 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.5.4 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.6.5 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.7.2 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.7.1 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.6.4 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.7.0 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.6.3 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.6.2 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.6.1 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.6.0 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb
spree_api-4.5.3 app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb